Websockets问题,也许同源政策?

Bai*_*kev 11 html5 websocket

我有一个托管在localhost:8000的网站.现在,我有一个服务器在localhost:8001上侦听websocket连接.我希望我的网站通过websocket api连接到这个服务器

var conn = new WebSocket('ws://localhost:8001');
Run Code Online (Sandbox Code Playgroud)

但是在调用时我在Chromium 6.0.472.62中遇到了一些错误

conn.send('something'); 
Run Code Online (Sandbox Code Playgroud)

看起来像:未捕获错误:INVALID_STATE_ERR:DOM异常11.

在Firefox 4(4.0b8pre)中,我收到错误:尝试使用不可用或不再可用的对象"代码:"11

我认为这是一个问题,握手不支持服务器上的websocket draft76,但我正在使用http://github.com/miksago/node-websocket-server/tree/master/lib/ws/声称支持draft75和草案76.

此外,初始握手似乎工作正常.我可以在创建新的WebSocket时收到服务器的响应,但是,从客户端调用"发送"时会出现问题.

这是一个与原始策略相同的问题,因为我的httpserver在端口8000上,而websocket服务器在8001上?如果是这样,我该如何解决这个问题呢?

kan*_*aka 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);
}
Run Code Online (Sandbox Code Playgroud)

此外,挂钩onclose和onerror事件也是一个好主意.