我在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 + '"}');
...