Chrome Extension開発を勉強してみる (19) - chrome.experimental.socket -

2012-09-27T00:00:00+00:00 Chrome Extension JavaScript

chrome.experimental.socketなAPIを使って、TCPサーバーと接続してみる

manifest.json

{
  "name": "test",
  "version": "0.1",
  "manifest_version": 2,
  "browser_action": {
    "default_title": "test",
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": ["experimental"]
}

background.js

(function(undefined) {
  chrome.browserAction.onClicked.addListener(function() {
    chrome.experimental.socket.create(
      "tcp",
      {},
      function (sock) {
        chrome.experimental.socket.connect(
          sock.socketId,
          "localhost",
          5555,
          function(result) {
            var bb = new WebKitBlobBuilder();
            bb.append("hoge");

            var fr = new FileReader();
            fr.onload = function(e) {
              chrome.experimental.socket.write(
                sock.socketId,
                e.target.result,
                function() {}
              );
            };
            fr.readAsArrayBuffer(bb.getBlob());

            chrome.experimental.socket.read(
              sock.socketId,
              1024,
              function(response) {
                if (response.resultCode != 5) {
                  return;
                }

                console.log(response);

                var data = new Uint8Array(response.data);
                var str = "";

                for (var i = 0; i < data.byteLength; i++) {
                  str += String.fromCharCode(data[i]);
                }

                console.log(str);
              }
            );
          }
        );
      }
    );
  });
})();

みたいな感じ。上記のTCPサーバーを起動してブラウザアクションをクリックするとバックグラウンドページのdevtool Consoleにレスポンス内容が表示されるはず

Sinon.JSを使ってXMLHttpRequestをテスト Chrome Extension開発を勉強してみる (18) - chrome.experimental.infobar -