2013-06-28 3 views
0

Я пытаюсь получить работу publish(), handshake(), subscribe() в потоке Web Worker() вместо потока пользовательского интерфейса. Но пока ничего не получилось, потому что, когда я пытаюсь импортировать с помощью importScripts ('cometd.js'), cometd.js не может загрузить, потому что cometd.js использует «окно», которое недоступно в Web Worker(). Кто-нибудь сделал что-нибудь по этому поводу?Кто-нибудь сделал cometd javascripts, работающий в веб-работнике?

ответ

1

Обратные вызовы CometD в большинстве приложений нуждаются в модификации DOM, поэтому очень удобно, что они запускаются в потоке пользовательского интерфейса.

Кроме того, внутренние работы CometD полностью асинхронны, поэтому он никогда не блокирует поток пользовательского интерфейса.

Поэтому использование WebWorkers в CometD не требуется: это усложнит реализацию CometD, и я, скорее всего, тоже приложение.

Чтобы ответить на ваш вопрос, был рассмотрен вариант запуска кода CometD в WebWorkers, но в итоге он не был реализован, потому что это было сочтено ненужным по причинам, указанным выше.

+0

, с другой стороны, имея возможность запускать длительный опрос в Совместном Работнике, даст нам возможность хорошо поделиться этим соединением между вкладками. – shabunc

+0

К сожалению, совместимость с браузером невелика: http://caniuse.com/#search=sharedworker – sbordet