javascript - Webworker 中的 HTML5 Websocket

标签 javascript websocket web-worker

我已经设法让 websockets 在使用 Chrome 的 webworker 中工作,但仅用于接收数据。当我尝试发送数据时出现 DOM 异常,有人成功发送数据了吗?

这就是我为网络 worker 准备的东西。

self.addEventListener('message', function(e) {
var data = e.data;

switch (data.cmd) {
    case 'init':
        self.postMessage("Initialising Web Workers...");
        testWS();
        break;
    default:
        self.postMessage('Unknown command: ' + data.msg);
    };
}, false);

function testWS() {
    var connectionAddr = "ws://localhost:8003";
    var socket = new WebSocket(connectionAddr);
    socket.onmessage = function(event) {
        self.postMessage('Websocket : ' + event.data);
    };

    socket.onclose = function(event) {
    };

    function send(message) {
        socket.send(message);
    }

    send("hello"); //Here is where the exception is thrown
}

最佳答案

在发送第一条消息之前,您必须监听 onopen websocket 事件。

socket.onopen = function(){
    // send some message   
};

关于javascript - Webworker 中的 HTML5 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998011/

相关文章:

multithreading - 在网络 worker 中使用谷歌地图对象?

javascript - 以全屏模式运行网站

JavaScript 数组返回 "a"?

javascript - socket.io如何为每个新连接发出热点事件

python - Tornado websocket 处理程序,self.close() 正在关闭连接而不触发 on_close() 方法

Javascript - 如何将 jQuery 对象(表)传递给 Web Worker?

web-worker - 在网络 worker 中使用 ipcRenderer?

javascript - 迭代数组与对象

javascript - Typemoq 和 Angular-cli 不能一起工作

javascript - 带有 Ratchet 的 PHP WebSockets - 示例不起作用