Расширения Chrome: простая передача сообщений и подключение Chrome - PullRequest
5 голосов
/ 26 сентября 2010

В какой момент я должен использовать хромированное соединение?Есть ли веская причина использовать как простую передачу сообщений, так и долгоживущие соединения?Имеют ли эти два значения для производительности?

Существуют ли какие-либо документы, кроме http://code.google.com/chrome/extensions/messaging.html, в которых сравниваются два подхода?

(правка: документация перемещена в https://developer.chrome.com/extensions/messaging)

Ответы [ 2 ]

7 голосов
/ 01 октября 2010

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

Например, мои расширения обычно имеют пользователя-конфигурируемые опции, и мне нужен способ отправить эти опции в мои скрипты контента.Я использую sendMessage и onMessage для передачи объекта JSON в мои скрипты содержимого.Этот объект содержит различные пользовательские настройки и, возможно, другое состояние.

Я также создал небольшую библиотеку, которая позволяет определять сочетания клавиш на фоновой странице.Как это работает, просто: контент-скрипт внедряется в каждую страницу, который затем прослушивает события keydown и keyup.

Когда происходит событие, он использует chrome.runtime.connect для связи с фоновой страницей.,Я думаю, что это отличный пример того, когда долгоживущее соединение было бы более полезным, чем многие sendMessage вызовы.

Я не думаю, что есть что-то, требующее, чтобы вы использовали их так или иначе ...Вы можете использовать несколько sendMessage или отправить только одно сообщение с подключением.Я считаю, что это больше вопрос семантики и выбора наиболее подходящего инструмента для работы.

Также имейте в виду, что использование connect позволяет легко сохранять отдельные состояния для каждого соединения, тогда как это может быть немногос sendMessage.

сложнее. Что касается производительности ... Честно говоря, не знаю, но я ожидаю, что они будут хотя бы похожими, то есть отправка 5 sendMessage будет примерно эквивалентна отправке5 сообщений с подключением.Имейте в виду, что они асинхронные, поэтому время может меняться в зависимости от обстоятельств.

1 голос
/ 15 апреля 2014

Чтобы добавить к другому ответу, использование портов имеет дополнительное преимущество в виде события onDisconnect.

Предположим, что скрипт содержимого открывает соединение с фоновой страницей. Фоновая страница будет немедленно уведомлена о том, что скрипт контента выгружается, если вкладка закрыта или пользователь уходит.

Это также позволяет отслеживать открытые вкладки (со вставленными скриптами содержимого) без использования разрешения tabs.

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