带Websockets的Redux-thunk

Jul*_*szc 5 javascript reactjs redux redux-thunk

我希望在某些组件想要订阅数据时按需创建websocket.如何以redux方式共享websocket实例?

action.js

export function subscribeToWS(url) {
   return dispatch => {
      let websocket = new WebSocket(url)
      websocket.on('connect', () => {
         websocket.send("subscribe") 
      }
      websocket.on('message', (message) => {
        dispatch(storeNewData(message))
      }
   } 
}
Run Code Online (Sandbox Code Playgroud)

我可以做这样的事情,但这需要为每个新订阅一个新实例.

mar*_*son 4

放置持久连接对象等内容的标准位置是中间件内部。事实上,实际上有几十个现有的中间件演示了这种方法,其中大多数都列在https://github.com/markerikson/redux-ecosystem-links/blob/master/middleware.md#sockets-and - 适配器。您应该能够按原样使用其中一些,或者至少作为示例。

  • 我和OP有同样的问题——感谢上面的链接。我在那里查看并发现了这个:https://github.com/luskhq/redux-ws,但该项目已被弃用,取而代之的是“redux thunk”。我之前曾在 http 异步请求中使用过 thunk,但我想知道是否有 websocket 的示例。我很难找到任何一个。 (11认同)
  • 我和@matthewatabet 有类似的问题。我正在寻找如何对来自 WebSocket 的新消息正确执行操作的示例。我想这很容易,但是一个简单的例子会非常有帮助。 (4认同)