我有一个使用React Router进行路由的React / Redux应用程序。
作为此应用程序的一部分,我设置了一个websocket连接。我面临的一个问题是,当直接导航到网址时,连接会被删除。
例如:
www.app.com/
www.app.com/link
(没有代码在此页面上建立任何连接)。这可以按预期工作。但是:
www.app.com/
/link
直接导航到{{1}}(或通过前面的示例导航到页面后刷新页面。这是预期的行为吗?如果有的话,是否有任何Redux / React路由器模式可以避免它?我是否每次都必须手动重新建立连接?
答案 0 :(得分:3)
是的,这是预期的行为。当您刷新页面或通过键入URL手动导航时,浏览器将再次转到服务器以加载文件,包括您的javascript应用程序(它可能从缓存中获取但结果是相同的)。因此,内存中的javascript代码(包括websocket连接)将丢失,并且将再次评估所有脚本。
没有办法解决这个问题。要始终打开websocket连接,您只需在应用程序入口点脚本中打开连接,无论用户在哪个页面。