2013-08-01 62 views
9

我設法讓websocket在使用Chrome的webworker中工作,但僅用於接收數據。當我嘗試發送數據時,我得到一個DOM異常,有沒有人設法發送數據?Webworker中的HTML5 Websocket

這是我的網絡工作者。

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 
} 

回答

17

在發送第一條消息之前,您必須監聽onopen websocket事件。

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

是的,你是正確的,只是在回想這裏之前就想通了,連接沒有打開,那就是問題所在。乾杯 – Jack