【发布时间】:2010-11-17 09:47:05
【问题描述】:
我正在尝试编写一段代码来打开 Web 套接字。
var ws = null;
var close = function() {
if (ws) {
console.log('closing ...');
ws.close();
}
}
var onOpen = function() {
console.log('opening...');
ws.send('hello. im connected');
};
var onClose = function() {
console.log('closed');
};
var onMessage = function(event) {
var data = event.data;
console.log('message: ' + data);
};
close();
var url = 'ws://localhost:9999';
ws = new WebSocket(url);
ws.onopen = onOpen;
ws.onclose = onClose;
ws.onmessage = onMessage;
console.log('ws: ' + ws);
if (ws)
{
console.log('url:' + ws.url);
console.log('readyState:' + ws.readyState);
ws.send(msg);
}
else
alert('no ws');
但是当看到控制台时,readyState一直是“CONNECTING”,导致socket send()命令抛出异常。
我尝试了扩展 https://chrome.google.com/extensions/detail/pfdhoblngboilpfeibdedpjgfnlcodoo 并遇到了同样的问题。服务器非常简单,接受传入的套接字并写出到控制台。
有最初的握手,但客户端的 readyState 仍然保持为 0。
这是握手:
GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:9999
Origin: http://localhost:8080
Sec-WebSocket-Key1: Qb 15 05 6 Gq 9 26 u0 6
Sec-WebSocket-Key2: 8096 C0587|7.
我在服务器中有什么特定的东西可以让客户端打开吗?
谢谢大家。
【问题讨论】:
-
你是否在服务器端解析握手并从两个密钥发回哈希?
-
你觉得你的问题得到了充分的回答吗? (如果是这样,您可以选择一个答案)。如果没有,我们还能帮助您解决您的问题吗?
标签: javascript websocket