gpt4 book ai didi

javascript - Firefox Websocket 双连接

转载 作者:行者123 更新时间:2023-11-30 18:17:17 24 4
gpt4 key购买 nike

背景:编写一个 websocket。在 Chrome 中运行良好。单一连接。在 Firefox 中工作正常,但它建立了两个连接,我不知道为什么。相同的 javascript、相同的网页、相同的套接字服务器。

客户端JS:

var ws;
doWebSocketSetup();
function doWebSocketSetup(){
console.log('Connecting...');
ws=new WebSocket('ws://mysocketserver.com:9300/demo');

ws.onopen=function(){
console.log('Connected!')
socketSend('connect',sessionStorage.user);
if(!sessionStorage.announce){
socketSend('login',sessionStorage.user);
sessionStorage.announce=true;
}
socketSend('view',window.location.href);
setTimeout(function(){
processQueue();
},100);
}
ws.onmessage=function(e){
if(e.data!='ok'){
$.msg(e.data,{header:'Server Message',live:10000});
console.log('Server: '+e.data);
}
processQueue();
}
ws.onclose=function(){
console.log('Disconnected');
}
}
var sendQueue=new Array();
function socketSend(action,data){
var payload = new Object()
payload.action = action
payload.client = sessionStorage.user
payload.data = data
sendQueue.unshift(payload);
}
function processQueue(){
if(sendQueue.length==0)
return;
var payload=sendQueue.pop()
console.log('Sending: '+JSON.stringify(payload));
ws.send(JSON.stringify(payload))
}

现在 Firefox 上的服务器控制台输出:

2012-10-18 20:58:53 [info] [client 68.99.226.57:53079] Connected 94e568176299729fa8669c512fdb107d 
2012-10-18 20:58:53 [info] [client 68.99.226.57:53080] Connected 457eb971eabaeba6b6afd637755ce53c
2012-10-18 20:58:53 [info] [client 68.99.226.57:53080] Performing handshake
2012-10-18 20:58:53 [info] [client 68.99.226.57:53080] Handshake sent
2012-10-18 20:58:54 [info] [client 68.99.226.57:53080] _actionConnect
2012-10-18 20:58:54 [info] [client 68.99.226.57:53080] _actionView
2012-10-18 20:58:58 [info] [client 68.99.226.57:53079] Disconnected - 94e5681762 99729fa8669c512fdb107d

在 Chrome 上:

2012-10-18 21:09:17 [info] [client 68.99.226.57:53161] Connected 3906f16fa4037cbb08a8a5d1d6094cea
2012-10-18 21:09:17 [info] [client 68.99.226.57:53161] Performing handshake
2012-10-18 21:09:17 [info] [client 68.99.226.57:53161] Handshake sent
2012-10-18 21:09:17 [info] [client 68.99.226.57:53161] _actionConnect
2012-10-18 21:09:17 [info] [client 68.99.226.57:53161] _actionView

您在 Chrome 上看到一个 SINGLE 连接,并调用了适当的握手和操作。在 Firefox 上,您同时建立了两个连接,一个握手并执行操作(它在浏览器上执行预期的操作),但第二个连接在 5 秒后被踢出。这只是 Firefox 的事情吗?我没有在 Firebug 中显示两个连接,只显示一个连接。如果它只是 Firefox 的东西,我可以接受它,因为确实发送和接收了正确的数据,但如果是这种情况,我会对他们皱眉。

最佳答案

这是 Firefox 15 中的错误它创建了一个它从不使用的推测连接(实际上不能,因为它是 WebSocket 连接而不是 HTTP 连接)。

在 Firefox 16 中已修复。

关于javascript - Firefox Websocket 双连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com