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