在共享的WebWorker中重用Websocket连接

时间:2015-04-21 09:03:16

标签: sockets websocket web-worker

我在Firefox中的共享WebWorker中使用Websocket通信。它适用于“init”,如下所示,客户端将浏览器中加载的站点发送到服务器,服务器响应一些数据。现在我想重新使用“套接字”来发送被点击的按钮的ID,但这不起作用。请参阅“按钮”事件。使用新的套接字连接时,它可以工作,但我宁愿重新使用现有的连接。这可能吗?

提前致谢。

主线程:

function initCommWebWorker() {
    worker.port.start();
    worker.port.postMessage(["init", document.URL, HOST, PORT]);
}

function buttonclick(url, button) {

    worker.port.postMessage(["button", document.URL, HOST, PORT, button.id]);
...

共享WebWorker:

self.addEventListener("connect", function(e) {

var port = e.ports[0];
var socket = null;

port.addEventListener("message", function (event) {

    switch (event.data[0]) {

    case "init":
        var server = "ws://" + event.data[2] + ":" + event.data[3];
        socket = new WebSocket(server);
        socket.onopen = function(){
            socket.send('{"site":"' + event.data[1] + '","type":"' + TYPE + '"}');
        };
        socket.onmessage = function(event) {
            port.postMessage(event.data);
        };
        socket.onclose = function(event) {
            port.postMessage('{"onclose":"' + event.data + '"}');
        };
        break;

    case "button":
        socket.send('{"button":"' + event.data[4] + '","type":"' + TYPE + '"}');

...

0 个答案:

没有答案