Chrome扩展程序中的Socket.io

时间:2013-08-12 01:44:27

标签: google-chrome google-chrome-extension socket.io

我正在尝试在我的Chrome扩展程序中使用Socket.io,但由于某种原因我无法让它工作。以下是我在background.html中的代码:

<!doctype html>
<html>
<head>
    <script src='socket.io.js'></script>
    <script>
    var socket = io.connect('http://localhost:8080/');

    chrome.browserAction.onClicked.addListener(function(tab) {
        socket.send('hi');
    });
    </script>
</head>
<body>
</body>

我的manifest.json我有以下内容来加载后台页面和一些权限:

"permissions": [
"http://*/",
"http://*/*"
],

"background": {
"page": "background.html"
},

然而,这不起作用。加载扩展时,它应该连接到Socket.io服务器,但它不会。我无法弄清楚造成这种情况的原因。当我只运行background.html文件时,这非常有效。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

根据 Manifest v2 "migration guidelines" ,您应该“删除标记中包含的JS代码并将其放在外部JS文件中”

根本不执行内联JS,因此将其放在外部JS文件中,然后将其导入background.html或使用清单中scripts属性的background属性,例如:

"background": {
    "scripts": [
        "socket.io.js",
        "background.js"
    ]
}

答案 1 :(得分:0)

尝试使用其CDN - https://cdn.socket.io/socket.io-1.0.6.js,并在manifest.json文件中添加

“content_security_policy”:“script-src'self'https://cdn.socket.io; object-src'self'”

为我工作。

答案 2 :(得分:-3)

socket.io.js不是文件系统上的文件,它应该由您选择的服务器提供服务。在您的情况下,localhost:8080