[英]WebSocket in Firefox establish two connection
我正在用Java编写WebSocket服务器。 当我使用WebSocket连接到firefox中的服务器时,我发现建立了两个连接,其中一个从不发送任何数据......
我的firefox版本是15.0.1
在Chrome中运行相同的代码即可,连接一次,只建立一个连接。
有人有这样的麻烦吗?
有服务器的代码:
ServerSocket svrSock = new ServerSocket();
svrSock.bind(new InetSocketAddress("0.0.0.0", 11111));
while(true) {
try {
// accept connection
Socket clientSock = svrSock.accept();
// print the socket which connected to this server
System.out.println("accept socket: " + clientSock);
// run a thread for client
new ClientThread(clientSock).start();
} catch (Exception e) {
e.printStackTrace();
}
}
还有js代码:
var url = 'ws://localhost:11111/test/';
var ws = new WebSocket(url);
ws.onopen = function(){
console.log('connected!');
ws.send(11111);
ws.close();
};
ws.onclose = function(){
console.log('closed!');
};
当我在firefox中运行这个js代码时,我在服务器控制台中得到了这个:
接受套接字:套接字[addr = / 127.0.0.1,port = 56935,localport = 11111]
接受套接字:套接字[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),它无法重新使用推测连接并且必须进行第二次连接。
如果您的服务器是正确的多线程并且可以接受多个连接但这很烦人,那么这不是一个关键问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.