【发布时间】:2018-07-25 19:54:06
【问题描述】:
短而甜: 在尝试打开一段时间后如何告诉 WebSocket 停止或“关闭”?
我目前正在开发一款类似于 Kahoot 的网络应用程序,玩家可以在其中连接手机进行游戏。该游戏使用完全原生的 JavaScript 在后台运行所有内容,并使用 WebSockets 与 django-channels 游戏服务器进行通信。除了玩家不小心锁定手机或切换应用程序并关闭 WebSocket 的情况外,游戏运行良好。我可以轻松地打开一个新连接,但由于某种原因,在移动 Safari 中,WebSockets 需要永远放弃连接。
例如:
- 用户通过 Wifi 连接并打开 WebSocket
- 用户在没有调用
.close和正确关闭连接的情况下断开 Wifi 并丢弃 WebSocket - 用户尝试在没有 Wifi 的情况下打开新的 WebSocket
- 用户在之前的 WebSocket 仍在尝试连接时连接到 Wifi
在我的测试中,第二个 WebSocket 将尝试连接至少一分钟,然后最终屈服并失败。只有这样我才能再次尝试重新连接,只是夸大了重新连接播放器的整个过程。
就像我上面问的那样:我怎样才能缩短这个过程?有没有办法让 WebSocket 早点放弃,还是我做错了?
如果我需要添加更多信息,请告诉我。这是我第一次发帖。
非常感谢!
【问题讨论】:
-
你读过this SO question吗?
-
什么是客户端开发环境?在那里您可以检查您的 webSocket 接口以查看它提供的超时或重试值。它只是一个浏览器吗?还是别的什么?
-
@jfriend00 这只是两个浏览器:Android 上的 Chrome 和 iOS 上的 Safari。我一直在寻找超时和重试值,但没有找到太多。如果有人能指出我正确的方向,那就太棒了。
标签: javascript ios websocket mobile-safari django-channels