java – Firefox中的WebSocket建立两个连接

前端之家收集整理的这篇文章主要介绍了java – Firefox中的WebSocket建立两个连接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在用Java编写WebSocket服务器.当我使用WebSocket连接到firefox中的服务器时,我发现建立了两个连接,其中一个从不发送任何数据……
我的firefox版本是15.0.1
在Chrome中运行相同的代码即可,连接一次,只建立一个连接.
有人有这样的麻烦吗?

有服务器的代码

  1. ServerSocket svrSock = new ServerSocket();
  2. svrSock.bind(new InetSocketAddress("0.0.0.0",11111));
  3. while(true) {
  4. try {
  5. // accept connection
  6. Socket clientSock = svrSock.accept();
  7. // print the socket which connected to this server
  8. System.out.println("accept socket: " + clientSock);
  9. // run a thread for client
  10. new ClientThread(clientSock).start();
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }

还有js代码

  1. var url = 'ws://localhost:11111/test/';
  2. var ws = new WebSocket(url);
  3. ws.onopen = function(){
  4. console.log('connected!');
  5. ws.send(11111);
  6. ws.close();
  7. };
  8. ws.onclose = function(){
  9. console.log('closed!');
  10. };

当我在firefox中运行这个js代码时,我在服务器控制台中得到了这个:

accept socket: Socket[addr=/127.0.0.1,port=56935,localport=11111]
accept socket: Socket[addr=/127.0.0.1,port=56936,localport=11111]

最佳答案
这是Firefox 15中的一个问题,它将在firefox 16:https://bugzilla.mozilla.org/show_bug.cgi?id=789018中修复

Firefox 15正在进行推测性连接,这对HTTP / SPDY很好,但由于WebSocket握手是HTTP 1.0(而不是1.1),它无法重新使用推测连接并且必须进行第二次连接.

如果您的服务器是正确的多线程并且可以接受多个连接但这很烦人,那么这不是一个关键问题.

猜你在找的JavaScript相关文章