【问题标题】:Why do I have to reconnect to localhost:3000 in a new window?为什么我必须在新窗口中重新连接到 localhost:3000?
【发布时间】:2017-06-01 19:06:26
【问题描述】:

我编写了一个程序,在运行时,我可以在浏览器(chrome)中使用 localhost:3000 进行连接。定期调试 WebSocket 连接失败时:

到 'ws://localhost:3000/serv/socketio/?EIO=3&transport=websocket' 的 WebSocket 连接失败:在建立连接之前 WebSocket 已关闭。

我的问题是,当我重新启动程序并尝试重新连接时,我不能简单地刷新页面。如果我只是尝试刷新页面,它将继续打印出 WebSocket 连接失败消息。我必须打开一个新窗口。为什么会这样?有解决办法吗?

编辑:我已经在 IE 中进行了测试,我可以毫无问题地刷新页面。 IE 将重新连接到 localhost:3000 而不会出现 WebSocket 断开失败

【问题讨论】:

  • 你能贴出你的代码吗
  • 我的代码没有问题,我在问为什么我需要在 google chrome 中打开一个新选项卡或窗口才能连接回本地主机,而不仅仅是刷新页面。打开 chrome 页面的新实例与连接到 localhost 的能力有什么关系?
  • 不幸的是,我要上传的代码太多了。我可以上传我的 WebSocketManager.js 但它没有问题。我只需要知道 chrome 是如何工作的。谢谢!
  • 它取决于您的连接

标签: c++ node.js google-chrome websocket localhost


【解决方案1】:

在使用专门的 Web 浏览器调试套接字时,我遇到了类似这样的有趣问题。我确信对此有一个神奇的答案,但我的回答是,根据我的经验,浏览器会尝试变得聪明并记住套接字不起作用的事实,以及关于它们信息的许多其他事情期望收到,等等。他们对状态的变化不是很敏感。这适用于很多事情,更不用说他们是否可以建立TCP连接。比如CSS缓存之类的……

所有这些都是为了节省一些互联网带宽。即做出“合理的假设”并在每页加载时下载更少的东西。当然,这些假设是建立在您进行常规网络浏览的前提下的。

所以,长话短说,打开一个新窗口。

使用私人浏览窗口也可能会有所帮助。

【讨论】:

  • 我尝试使用隐私浏览并检查了“禁用缓存(在 DevTools 打开时)”,但仍然没有任何运气。
猜你喜欢
  • 1970-01-01
  • 2021-08-07
  • 2020-01-16
  • 2023-04-05
  • 1970-01-01
  • 2014-02-19
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多