Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以将Websocket连接发送到客户端?_Javascript_Python_Websocket_Tornado - Fatal编程技术网

Javascript 是否可以将Websocket连接发送到客户端?

Javascript 是否可以将Websocket连接发送到客户端?,javascript,python,websocket,tornado,Javascript,Python,Websocket,Tornado,伙计们 我有以下情况: 我正在运行一个带有WebSocketHandler的Tornado服务器,它处理websocket上的打开、打开和关闭事件: class WebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): (...) def on_message(self, message): (...) def on_close(self):

伙计们

我有以下情况:

  • 我正在运行一个带有WebSocketHandler的Tornado服务器,它处理websocket上的打开、打开和关闭事件:

     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连接

    我打算在打开套接字之前,在向服务器发出第一个请求并检查响应时发送一个用户唯一的id来实现这一点

    问题是:如果Tornado服务器检测到用户已打开连接(websocket),是否可以向该用户(客户端)发送对该连接的引用,以使客户端代码能够使用该连接,而不是创建新连接


提前谢谢

原则上,这可以通过从共享后台Web工作者打开WebSocket连接来实现

并非所有浏览器都支持从Web workers打开WebSocket连接。我知道它可以在Chrome和IE11上与专门的网络工作者一起工作,而不能在Firefox上工作


我不知道哪些浏览器支持从共享Web workers打开WebSocket连接。

大多数浏览器将打开一个全新的实例,并且不会重用其他选项卡上的项目,即使它是同一个站点。也就是说,无论发生什么情况,客户端(浏览器)都将强制建立新连接。这是所有web trabbic背后的基本思想,这是一个新的->打开->请求->获取->显示请求的故事,在这里,您不断处理新的连接:)我理解您想要实现的目标,但遗憾的是,正如前面提到的,浏览器不会考虑您说“嘿,您已经打开了连接”而且它会简单地请求一个新的开口,因为它有时比重复使用hanks来获得快速答案更快,@Torxed!事实上,这完全有道理。我将更改aproach以限制每个用户打开的套接字的数量。再次感谢:)谢谢,奥伯斯特!我要试试看!