我有一个托管在localhost:8000的网站。现在,我有一个服务器在localhost:8001上侦听websocket连接。我希望我的网站通过websocket api连接到这个服务器
var conn = new WebSocket('ws://localhost:8001');
但是在调用
时,我在Chromium 6.0.472.62中遇到了一些错误conn.send('something');
看起来像:未捕获的错误:INVALID_STATE_ERR:DOM例外11.
在Firefox 4(4.0b8pre)中,我收到错误消息: 试图使用一个没有或不再可用的对象“code:”11
我认为这是握手不支持服务器上的websocket draft76的问题,但我使用http://github.com/miksago/node-websocket-server/tree/master/lib/ws/声称支持draft75和draft76。
此外,初始握手似乎工作正常。我可以在创建新的WebSocket时收到服务器的响应,但是,从客户端调用“发送”时会出现问题。
这是一个与原始策略相同的问题,因为我的httpserver在端口8000上,而websocket服务器在8001上?如果是这样,我该如何解决这个问题?
答案 0 :(得分:27)
也许你需要等待onopen事件开火?
var conn = new WebSocket('ws://localhost:8001');
conn.onopen = function (e) {
conn.send('something');
}
conn.onmessage = function (e) {
console.log('got something: ' + e.data);
}
此外,最好挂钩onclose和onerror事件。