Websocket 根据有效载荷从效应切换最终发射动作

Websocket 根据有效载荷从效应切换最终发射动作,websocket,rxjs,ngrx,Websocket,Rxjs,Ngrx,我有一个使用ngrx的应用程序 客户机更新产品后,将使用websocket更新所有客户机 这是通过订阅套接字实现的,因此在套接字上调用下一个方法后,它将调用一个操作来处理更新的副作用 但是,现在当涉及到删除和添加时,我想使用相同的套接字效果,但更改其最后的操作调用 或者如果有人能提出更好的方法 套接字服务: export class SocketService { socket$ = Observable.webSocket( 'ws://localhost:1234'); } 影响: /

我有一个使用ngrx的应用程序

客户机更新产品后,将使用websocket更新所有客户机

这是通过订阅套接字实现的,因此在套接字上调用下一个方法后,它将调用一个操作来处理更新的副作用

但是,现在当涉及到删除和添加时,我想使用相同的套接字效果,但更改其最后的操作调用

或者如果有人能提出更好的方法

套接字服务:

export class SocketService {
  socket$ = Observable.webSocket( 'ws://localhost:1234');
}
影响:

//This is called from component to start the update process
    @Effect({dispatch:false}) beginUpdate$: Observable<any> = this.actions$
        .ofType<fromBlogActions.BlogUpdateStartAction>(fromBlogActions.BLOG_UPDATE_START_ACTION)
        .map((action:any)=>{
            console.log(action)
            return action.payload;
        })
        .do((action)=> this.socketService.socket$.next(JSON.stringify(action)))
//Calls the next method to send data to the websocket

应该是这样的:

 @Effect() watchSocket$ = this.socketService.socket$
.map((action:BlogPayLoad)=>{
 console.log(action)
 return action
 })
.mergeMap((action)=> { 
 if(action.type === 'BlogAddAction'){
     return new fromBlogActions.BlogAddAction(action))
 else if (...) {
    ....
  }
 else if (action.type === 'BlogUpdatedAction'){
     return new fromBlogActions.BlogUpdatedAction(action))
 })

是的,我已经开始实现类似的功能,但是在map函数中,感谢您抽出时间回答这个问题
 @Effect() watchSocket$ = this.socketService.socket$
.map((action:BlogPayLoad)=>{
 console.log(action)
 return action
 })
.mergeMap((action)=> { 
 if(action.type === 'BlogAddAction'){
     return new fromBlogActions.BlogAddAction(action))
 else if (...) {
    ....
  }
 else if (action.type === 'BlogUpdatedAction'){
     return new fromBlogActions.BlogUpdatedAction(action))
 })