Как запустить EventSource внутри Shared Worker?

Я реализовал отправленные сервером события для получения сообщений от сервер. Я описываю, как я это реализовал в другом вопросе< /а>

Теперь я пытаюсь запустить его внутри совместно используемого рабочего процесса, чтобы пользователь не мог открывать несколько подключений к серверам через несколько вкладок браузера.

Вот что я сделал для запуска кода внутри Shared Worker

создал файл с именем 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 внутри общего работника?


person Jaylen    schedule 30.06.2015    source источник
comment
Что такое getMessagingQueue? Afaik, рабочие генерируют только события message и error.   -  person Bergi    schedule 30.06.2015
comment
@Bergi спасибо за ваш комментарий. getMessagingQueue — это имя события, которое возвращает poll.php.   -  person Jaylen    schedule 30.06.2015
comment
Да, на EventSource, но вы не можете использовать то же имя события на воркере - есть только onmessage.   -  person Bergi    schedule 30.06.2015
comment
Понял, хорошо, но я получаю эту ошибку в консоли ReferenceError: EventSource is not defined, которая ссылается на строку 5 из worker.js   -  person Jaylen    schedule 30.06.2015
comment
Хм, похоже EventSource не поддерживается в воркерах :-/   -  person Bergi    schedule 30.06.2015
comment
Этот пост показывает, как они это реализовали, но я не могу воспроизвести его код gist.github.com/rwaldron/552549   -  person Jaylen    schedule 30.06.2015
comment
Возможно, поддержка зависит от браузера. Возможно, вы захотите связаться с Риком, чтобы узнать, как он реализовал эту суть.   -  person Bergi    schedule 30.06.2015
comment
делает ли это больше с тех пор, как использовать WebSocket?   -  person Jaylen    schedule 30.06.2015
comment
WebSockets кажется, поддерживается, по крайней мере, в Workers, да.   -  person Bergi    schedule 30.06.2015
comment
… хотя на самом деле SSE должен работать   -  person Bergi    schedule 30.06.2015
comment
Хм, а почему у меня не работает?   -  person Jaylen    schedule 30.06.2015
comment
В настоящее время Firefox не поддерживает EventSource в веб-/общих рабочих процессах Ошибка 876498   -  person Ricardo    schedule 02.07.2015
comment
Поддержка браузера   -  person Ricardo    schedule 02.07.2015