【问题标题】:Websockets Issue, Perhaps Same Origin Policy?Websockets 问题,也许是同源策略?
【发布时间】:2011-04-24 23:29:43
【问题描述】:

我有一个托管在 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) 中,我收到错误: 试图使用不可用或不再可用的对象”代码:“11

我认为这是握手不支持服务器上的 websocket Draft76 的问题,但我使用的是声称支持 Draft75 和 Draft76 的http://github.com/miksago/node-websocket-server/tree/master/lib/ws/

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

由于我的 httpserver 在端口 8000 上而 websocket 服务器在 8001 上,这是否是同源策略的问题?如果是这样,我该如何解决这个问题?

【问题讨论】:

    标签: html websocket


    【解决方案1】:

    也许您需要等待 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 事件也是一个好主意。

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2016-01-10
      • 1970-01-01
      • 2016-05-07
      • 2011-07-04
      • 2018-01-27
      相关资源
      最近更新 更多