Websockets问题,也许同源政策?

时间:2010-10-13 17:07:50

标签: html5 websocket

我有一个托管在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上?如果是这样,我该如何解决这个问题?

1 个答案:

答案 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事件。