我需要创建一个chrome扩展,当我们从socket io node js server收到消息时会显示一条通知。
如何在chrome扩展程序中包含socket io?我无法让它发挥作用。
Content.js: - 未捕获的ReferenceError:未定义io
var socket = io.connect('http://localhost:1337');
socket.on("hello",function(data){
console.log(data.text);
chrome.runtime.sendMessage({msg:"socket",text:data.text},function(response){});
});
清单: - 这不是导入套接字io 无法从以下位置加载扩展程序: 无法加载后台脚本' http://localhost:1337/socket.io/socket.io.js'。
"background": {
"scripts": [
"http://localhost:1337/socket.io/socket.io.js",
"background.js"
]
},
node server.js
var app = require('http').createServer(handler).listen(1337);
var io = require('socket.io').listen(app);
function handler(req,res){
console.log(req.url);
res.writeHead(200, {'Content-Type':'text/plain'});
res.end('Hello Node\n You are really really awesome!');
}
io.sockets.on('connection',function(socket){
socket.emit('hello',{text:"node!"});
});
答案 0 :(得分:11)
由于您只需要socket.io-client,这就是您应该做的事情:
"background": {
"scripts": [
"socket.io.js",
"background.js"
]
},
从此处下载并添加socket.io.js文件:https://raw.githubusercontent.com/Automattic/socket.io-client/1.3.5/socket.io.js
答案 1 :(得分:0)
请注意2020:
除了套接字版本以外,Rahat的回答都很好,当您在后台脚本中使用它时,它始终会重新连接,因此,如果使用不合适版本的socket.io.js,您将得到类似的内容
但是使用socket.io.js 2.3.0可以正常工作
这是一个对我有用的链接https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.js