Chrome扩展程序 - 实施渠道

时间:2012-03-25 23:49:59

标签: javascript google-chrome-extension channel-api

我正在尝试使用我的后端服务器实现一个频道,该服务器运行在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 个答案:

答案 0 :(得分:2)

只要后台页面收到来自分机的其他部分的请求(例如内容脚本),您编写的代码就会打开一个频道。

您可能希望在扩展加载后立即打开频道,然后才开始。要做到这一点,只需在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()包装器)