Websockets问题,也许是同源策略?
问题描述:
我有一个网站托管在localhost:8000。现在,我有一台服务器在localhost:8001上监听websocket连接。我想我的网站通过WebSocket的API连接到该服务器一样Websockets问题,也许是同源策略?
var conn = new WebSocket('ws://localhost:8001');
但我在调用时
conn.send('something');
这看起来像得到铬6.0.472.62一些错误:未捕获的错误:INVALID_STATE_ERR: DOM异常11.
在Firefox 4(4.0b8pre),I得到的错误: 试图使用一个对象,它是没有,或不再,可用“代码:” 11
我认为这是在服务器上不支持websocket draft76的握手问题,但我使用http://github.com/miksago/node-websocket-server/tree/master/lib/ws/,声称支持draft75和draft76。
此外,初始握手似乎很好。在创建新的WebSocket时,我可以从服务器收到响应,但是,从客户端调用“发送”时会出现问题。
这是一个问题,因为我的HTTP服务器是在端口8000和websocket服务器在8001上是相同的来源策略?如果是这样,我该如何解决这个问题?
答
也许你需要等待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的事件来说是个好主意。