Javascript 创建使用websocket api将服务器数据状态与客户端同步的redux中间件

Javascript 创建使用websocket api将服务器数据状态与客户端同步的redux中间件,javascript,angular,redux,rxjs,Javascript,Angular,Redux,Rxjs,我有一个基于WebSocket的服务器API。如果客户端连接,他必须首先发送一条消息,如果服务器发出成功消息,客户端可以开始处理服务器数据 现在我有了一个基于angular4的应用程序,如果用户打开几个视图组件,每个组件都会从API注册到特定事件(使用Websockets服务)。如果新状态来自服务器,则视图可以自我更新。视图还可以向服务器发送更新事件,服务器重新计算数据并通过WebSocket发送更新。服务器本身保存数据的状态 但现在,不存在真正的客户机状态。在不过度复杂这篇文章的情况下(我排除

我有一个基于WebSocket的服务器API。如果客户端连接,他必须首先发送一条消息,如果服务器发出成功消息,客户端可以开始处理服务器数据

现在我有了一个基于angular4的应用程序,如果用户打开几个视图组件,每个组件都会从API注册到特定事件(使用Websockets服务)。如果新状态来自服务器,则视图可以自我更新。视图还可以向服务器发送更新事件,服务器重新计算数据并通过WebSocket发送更新。服务器本身保存数据的状态

但现在,不存在真正的客户机状态。在不过度复杂这篇文章的情况下(我排除了路由等),我现在的主要目标是集成redux来管理UI中的状态,这样用户就可以重新加载页面,并使用与服务器数据同步的文件查看最后打开的视图

我目前的做法是创建一个

  • 后端服务,包含WebSocketSubject(RxJS)并管理服务器的发送或接收。我传递一个可观察的连接,如果连接存在,它将发送一个事件。我在服务中还有一个订阅,它将所有websockets推送消息作为redux事件进行分发,并充当中间件
  • /**此代码是对redux word的绑定,充当推送中间件
    *@type{Subscription}
    */
    this.subscription=this.socket$.subscripte(
    (msg)=>this.ngRedux.dispatch({type:msg.method,value:msg.parameters}),
    (err)=>this.ngRedux.dispatch({type:AppActions.CONNECTION_FAILED}),
    ()=>this.ngRedux.dispatch({type:AppActions.CONNECTION_CLOSED})
    
    );这里没有真正的答案,但你可能想看看“logux”:)我更愿意使用sagas或redux可观测值:)哦,我的糟糕!!!我以为@Sonne在用ngrx。。。当然,你应该使用ngrx和Angular:)