Расширение Chrome - Реализация каналов

Я пытаюсь реализовать канал с моим внутренним сервером, который работает на Google App Engine (Python), и я не уверен, как написать код внешнего интерфейса для Chrome. Я нашел некоторый код, но не могу проверить, так как я жду, когда мой партнер напишет внутренний код. Мне интересно, правильно ли я это реализую.

Я тоже не понимаю, как код срабатывает? Что инициирует создание этого канала?

//The code I found which is placed in background.html:

chrome.extension.onRequest.addListener (function(request, sender, sendResponse) {
    var channel = new goog.appengine.Channel(channelToken);
    var socket = channel.open()

    socket.onopen = function() {
      // Do stuff right after opening a channel
    }

    socket.onmessage = function(evt) {
      // Do more cool stuff when a channel message comes in
    }
}); 

1 ответ

Решение

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

Возможно, вы захотите открыть канал, как только загрузится расширение, и только потом. Для этого просто откройте сокет в вашем background.html JS, который работает при загрузке страницы.

Например:

var channel = new goog.appengine.Channel(channelToken);
var socket = channel.open()

socket.onopen = function() {
  // Do stuff right after opening a channel
}

socket.onmessage = function(evt) {
  // Do more cool stuff when a channel message comes in
}

(Без оболочки onRequest.addListener())

Другие вопросы по тегам