我实施了服务器发送的事件 https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events接收来自服务器的消息。我描述了我是如何实现它的另一个问题 https://stackoverflow.com/questions/31143150/is-there-a-way-to-make-using-server-sent-events-persistent
现在我试图在一个共享工作者 https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Shared_workers防止用户通过多个浏览器选项卡打开与服务器的多个连接。
这是我在共享工作线程中运行代码所做的事情
创建了一个名为worker.js
我把这段代码放在里面
self.addEventListener('getMessagingQueue', function (event) {
console.log('Listener is Available');
var thisp = this;
var eventSrc = new EventSource('poll.php');
eventSrc.addEventListener('getMessagingQueue', function (event) {
var message = JSON.parse(event.data);
thisp.postMessage(message);
}, false);
}, false);
然后当 HTML 页面加载时我调用这段代码
$(function(){
var worker = new SharedWorker('worker.js');
worker.addEventListener('getMessagingQueue', function (event) {
var message = event.data;
console.group('Message Received');
console.log( message );
console.groupEnd();
}, false);
});
但代码没有从服务器返回消息。
我怎样才能正确运行EventSource
共享工作者内部的事件?