多个Websockets

Art*_*hur 16 javascript websocket

我试图在一个页面上使用两个websockets.这是我的代码:

var pageViewWs = new WebSocket("ws://localhost:9002/pageView");
var sessionWs = new WebSocket("ws://localhost:9002/session");

pageViewWs.onmessage = function (event) {
  alert("PageView");
};

sessionWs.onmessage = function (event) {
  alert("Session"); 
};
Run Code Online (Sandbox Code Playgroud)

仅显示PageView警报.在服务器端,没有请求/ session,只有/ pageView.

现在,如果我切换var pageViewWs和var sessionWs,那么会显示Session警报而不是PageView.这不是因为它们是警报,我试图附加到身体和divs,我已经介入使用Firebug.看起来一次只能创建一个WebSocket,尽管在Firebug中,pageViewWs和sessionWs的属性看起来是相同的,除了它们的url.

我只在Firefox 15.0.1中测试过这个.是否存在某种Websocket限制,您一次只能运行一个?或者我的代码出了什么问题?

log*_*imp 1

我相信您只能创建一个从客户端到主机上特定端口的 WebSocket 连接。您是否尝试过在不同的端口或不同的服务器上运行这两个服务?这将使您能够确定限制...

  • iirc 您正在打开到特定端口的连接,并保持其打开状态 - 因此打开到同一端口的第二个连接是没有意义的(流量应该只通过第一个连接) (9认同)
  • 同一端口的多个连接应该不是问题。请参阅[多个客户端如何同时连接到一个端口...?](http://stackoverflow.com/questions/3329641/how-do-multiple-clients-connect-simultaneously-to-one-port-say-80 -on-a-server): *[I]如果我从客户端连接到同一个 Web 服务器两次,从我的角度来看,这两个连接将具有不同的源端口,而从 Web 服务器的目标端口将不同。因此,即使两个连接具有相同的源 IP 地址和目标 IP 地址,也不存在歧义。* (9认同)
  • 因此,要强调的是: __到一个服务器端口的多个 WebSocket 连接是完全有效的。__ 某些浏览器可能会对此引入限制,但它永远不会成为 WebSocket 的固有限制,因此它将取决于您的运行时/浏览器正在使用是否可以有多个连接。 (5认同)
  • 我刚刚尝试使用两个不同的端口,它成功了!很有意思; 我想知道为什么会这样。 (4认同)
  • 从页面到服务器进行的任何其他 js 调用(例如 AJAX POST)也将使用该端口。它同时处理传递这些内容,所以我认为它可以处理多个 WS (2认同)