Поведение extension.onConnect, extension.connect и порта - PullRequest
1 голос
/ 23 марта 2012

Мне любопытно, как onConnect, connect и port.postMessage / onMessage должны себя вести, если есть несколько слушателей. В документации неясно, что происходит, и где происходит отключение.

Скажем, у меня есть три контекста (фоновая страница, скрипт содержимого и всплывающее окно действий браузера) - каждый при запуске зарегистрировал прослушиватель onConnect. Фоновая страница хочет отправить сообщение им обоим - могу ли я просто подключиться (), а затем отправить сообщение через порт? Что делать, если мне нужно подтверждение получения? Могу ли я сказать - port.postMessage ({receive: true}) в обоих контекстах, которые получили onConnect? Получу ли я два сообщения от парня, который подключен () ed? Получу ли я сообщение onConnect () на фоновой странице, где я позвонил connect ()?

Я прочитал http://code.google.com/chrome/extensions/messaging.html и http://code.google.com/chrome/extensions/extension.html# - они довольно ясно дают понять, как работают sendRequest и onRequest, но мне нужно подтверждение доставки, которое я не могу адекватно получить из SendRequest.

Мой вопрос сводится к следующему: сколько «концов» может быть для объекта Port и как он обрабатывает «разъединенные» вызовы от любого из концов?

1 Ответ

1 голос
/ 02 апреля 2012

Порты на самом деле довольно простые.Я думаю, что пример будет работать лучше, учтите, что я не использую скрипт контента, но вот скрипт утилиты, который я создаю, который называется socket.js, который обеспечивает непрерывную двустороннюю связь между всплывающей и фоновой страницами.

https://github.com/jjNford/chrome-extension-socket

В настоящее время я использую его в этом расширении:

https://chrome.google.com/webstore/detail/jgekomkdphbcbfpnfjgcmjnnhfikinmn

PostTask API удобен для целей UX.Я знаю, что не ответил прямо на ваш вопрос, но я надеюсь, что это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...