各位!
我有以下情况:
我正在运行一个带有 WebSocketHandler 的 Tornado 服务器,该处理程序处理 websocket 上的 open、on_message 和 on_close 事件:
class WebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): (...) def on_message(self, message): (...) def on_close(self): (...)
我有一个 View ,客户端打开一个新的 WebSocket 并设置“onmessage”事件处理程序:
window.onload = function() { ws = new WebSocket("ws://192.168.0.51:8080/websocket"); ws.onmessage = function(e) { console.log(e.data); }; }
如果用户在浏览器中打开一个新选项卡,但他已经在服务器端打开了一个 websocket,我想稍微更改一下这个示例以“重用”websocket 连接。
我打算通过在打开套接字之前向服务器发出第一个请求并检查响应时发送用户唯一 ID 来实现此目的。
问题是:如果 Tornado 服务器检测到用户已经打开了连接(websocket),是否可以向该用户(客户端)发送对该连接的引用以启用客户端代码使用它而不是创建新的?
提前致谢!
最佳答案
原则上,这可以通过从共享后台 Web Worker 打开 WebSocket 连接来实现。
并非所有浏览器都支持从 Web Worker 打开 WebSocket 连接。我知道它适用于 Chrome 和 IE11 上的专门网络工作人员,但不适用于 Firefox。
我不知道哪些浏览器支持从共享 Web Worker 打开 WebSocket 连接。
关于javascript - 是否可以向客户端发送 Websocket 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605389/