在反应路由器中维护websocket连接

时间:2017-02-14 09:41:54

标签: reactjs websocket redux react-router

我有一个使用React Router进行路由的React / Redux应用程序。

作为此应用程序的一部分,我设置了一个websocket连接。我面临的一个问题是,当直接导航到网址时,连接会被删除。

例如:

  1. 用户登陆主页www.app.com/
  2. 建立Websocket连接。
  3. 用户通过React Router browserHistory导航到www.app.com/link(没有代码在此页面上建立任何连接)。
  4. 保持连接。
  5. 这可以按预期工作。但是:

    1. 用户登陆主页www.app.com/
    2. 建立Websocket连接。
    3. 用户通过在地址栏中输入/link直接导航到{{1}}(或通过前面的示例导航到页面后刷新页面。
    4. 连接断开。
    5. 这是预期的行为吗?如果有的话,是否有任何Redux / React路由器模式可以避免它?我是否每次都必须手动重新建立连接?

1 个答案:

答案 0 :(得分:3)

是的,这是预期的行为。当您刷新页面或通过键入URL手动导航时,浏览器将再次转到服务器以加载文件,包括您的javascript应用程序(它可能从缓存中获取但结果是相同的)。因此,内存中的javascript代码(包括websocket连接)将丢失,并且将再次评估所有脚本。

没有办法解决这个问题。要始终打开websocket连接,您只需在应用程序入口点脚本中打开连接,无论用户在哪个页面。