簡體   English   中英

Firefox中的WebSocket建立兩個連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM