JavaScript WebSocket立即关闭连接

时间:2011-10-26 15:13:22

标签: javascript html5 node.js websocket http-1.1

我正在编写自己的脚本,使用WebSocket API连接到带有JavaScript的websocket服务器。关于连接立即关闭,我遇到了问题。

这是客户端脚本:

var host = 'ws://localhost:8080';
try
{
    debug.add('Connection request submitted for ' + host);
    socket = new WebSocket(host);
    debug.readyStateListener();

    debug.add('Socket request started');

    socket.onopen = function()
    {
        debug.add('Connection opened');
    }

    socket.onmessage = function(message)
    {
        debug.add('data received ' + message.data);
    }
    socket.onclose = function()
    {
        debug.add('Connection closed');
    }
}
catch(e)
{
    debug.add('WebSockets error ' + e.toString() );
}

这是我收到的调试:

Connection request submitted for ws://localhost:8080
socket readyState change to 0
Socket request started
socket readyState change to 3
Connection closed

debug.readyStateListener()轮询socket.readyState以进行更改。发生的事情是它变为0表示连接正在打开,然后直接变为3表示连接已关闭。

服务器接收连接正常,但客户端会立即关闭连接。

我已经在启用了WebSockets的Opera 11和最新版本的Chrome中尝试过它。这两个时间都得到了相同的结果。

我可以通过原始连接与服务器完美通信,或者只是在我的浏览器中访问http://localhost:8080/,这就是结果:

GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; IBM EVV/3.0/EAK01AG9/LE; en) Presto/2.9.168 Version/11.51
Host: localhost:8080
Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: nl-NL,nl;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

通过http发送请求直到我结束它,连接也保持活着而没有任何缺陷。

通过JavaScript WebSocket API,服务器会收到此请求:

GET / HTTP/1.1
Host: localhost:8080
Origin: http://localhost
Upgrade: WebSocket
Sec-WebSocket-key1: L58(b Q]'9 4 9\  0 *+ 6 a4
Connection: Upgrade
Sec-WebSocket-Key2: \+ 1 5d/9541840N*4

我的最后一个猜测是Connection:升级或升级:客户端不能正确支持WebSocket。对我而言,收到Connection更合乎逻辑:keep-alive但我不知道如何重新开始。

1 个答案:

答案 0 :(得分:0)

始终建立连接,但根据握手进行保留或删除。您需要确保您的Chrome版本和WebSocket服务器都实现了相同版本的WebSocket规范草案。

否则连接最终被拒绝。