人们!
我有以下情况:
我正在运行一个带有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):
(...)
我有一个视图,客户端打开一个新的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。 / p>
我打算通过在打开套接字之前向服务器发出第一个请求并检查响应时发送用户唯一ID来执行此操作。
问题:如果Tornado服务器检测到用户已经打开了连接(websocket),是否可以向该用户(客户端)发送对该连接的引用以启用客户端代码使用它而不是创建一个新代码?
提前致谢!
答案 0 :(得分:1)
原则上,这可以通过从共享后台Web工作者打开WebSocket连接来实现。
所有浏览器都不支持从Web worker打开WebSocket连接。我知道它适用于Chrome和IE11上的专职Web工作人员,并且它不适用于Firefox。
我不知道哪些浏览器支持从共享 Web工作者打开WebSocket连接。