Reactjs 如何/在何处将服务器通信注入Flux工作流?
上下文 我们正在构建一个基于Flux的web应用程序,其中客户端(Flux/React/TypeScript)通过WebSocket(而不是HTTP GET)与服务器(C#)通信 当执行客户端操作时,我们通过web套接字连接向服务器发送命令请求 服务器总是以第一次启动响应(指示是否可以执行请求的操作)快速响应,然后以一个或多个进度响应(可能是数百个响应,其中包含有关已执行操作的进度信息)进行后续响应。当服务器上的操作完成时,最后一个进度响应的进度分数将为100%,并显示“OK”错误状态 请注意,某些服务器操作可能只需要100毫秒,但其他操作可能需要10分钟(因此会有进度响应,因此客户端可以向用户显示有关该操作的信息) 在客户中,我们有:Reactjs 如何/在何处将服务器通信注入Flux工作流?,reactjs,websocket,client-server,flux,Reactjs,Websocket,Client Server,Flux,上下文 我们正在构建一个基于Flux的web应用程序,其中客户端(Flux/React/TypeScript)通过WebSocket(而不是HTTP GET)与服务器(C#)通信 当执行客户端操作时,我们通过web套接字连接向服务器发送命令请求 服务器总是以第一次启动响应(指示是否可以执行请求的操作)快速响应,然后以一个或多个进度响应(可能是数百个响应,其中包含有关已执行操作的进度信息)进行后续响应。当服务器上的操作完成时,最后一个进度响应的进度分数将为100%,并显示“OK”错误状态 请注意,
- sendCommandRequest函数,我们调用它通过websocket向服务器发送命令请求
- 处理函数handleCommandResponse(在websocket onMessage回调中调用)
- Flux存储可以有部分更新的数据:只要服务器没有发回最终结果,存储就会有新参数,但仍然是旧图像
- 我们现在需要两个Flux操作:一个由GUI用来表示用户做了一些更改,另一个由web套接字回调用来表示结果已经到达
- 如果服务器端出现问题,Flux存储中将已经设置了新参数,而我们将永远不会收到新映像,因此存储中的数据将损坏
- 缓存
- 依赖保护
- 推测性重试
- 重联算法
SHOULD set the number of seconds that expire before reconnecting
to an unpredictable number between 0 and 60 (this helps to ensure
that not all entities attempt to reconnect at exactly the same
number of seconds after being disconnected).
SHOULD back off increasingly on the time between subsequent
reconnection attempts (e.g., in accordance with "truncated binary
exponential backoff" as described in [ETHERNET]) if the first
reconnection attempt does not succeed.
- 恢复TLS