我正在使用 Firefox 48,它应该对于 WebExtensions 是稳定的。我已将我的测试应用程序与 Socket.IO 连接起来。一旦我关闭弹出窗口,socket.IO 连接就会中断。这是代码:
清单.json
{
"manifest_version": 2,
"name": "myapp",
"version": "1.0",
"browser_action": {
"default_icon": {
"96": "button/icon.png"
},
"default_title": "myapp",
"default_popup": "popup/main.html"
}
"background": {
"scripts": ["myclient.js"]
}
}
main.html
<body>
<script src="/scripts/socket.io.js"></script>
<script src="/scripts/jquery-2.2.4.min.js"></script>
<script src="/myclient.js"></script>
</body>
我的客户端.js
var address = "localhost";
var client = io("http://" + address + ":17001/");
client.on("message", function () {
$("#test").text("message");
});
我的 nodeJS 服务器代码
console.log("Server started");
var io = require("socket.io")(17001);
io.on("connection", function (socket) {
var address = socket.request.connection.remoteAddress;
console.log("Someone joined. Socket ID:", socket.id, address);
io.emit("message");
socket.on("disconnect", function () {
console.log("Someone disconnected!");
});
});
如何阻止连接断开?TIA
编辑:也尝试了与 chrome 相同的扩展,因为我在这里读到firefox 不支持background
,但连接中断的问题仍然存在。
编辑2:按照安德鲁所说更新了我的代码,仍然不起作用:
"background": {
"scripts": ["myclient.js", "/scripts/socket.io.js", "/scripts/jquery-2.2.4.min.js"],
"page": "bgp.html"
}
我还通过注释该行尝试了上面的代码scripts
,但仍然无法正常工作。
bgp.html
<!DOCTYPE html>
<html lang="en">
<body>
<script src="/scripts/socket.io.js"></script>
<script>
var address = "localhost";
var client = io("http://" + address + ":17001/");
</script>
</body>
</html>
如果我从中删除连接的创建myclient.js
,则根本不会发生连接!这意味着 bgp.html 不起作用。