我需要Chrome Packaged App和NodeJS脚本之间的socket.io连接。我熟悉NodeJS和socket.io,但不熟悉Chrome Packaged App。
似乎很难(我没有找到任何解释如何做的文档)。
我首先尝试简单地加载从我的NodeJS(http://localhost:8080/socket.io/socket.io.js
)提供的socket.io.js脚本。但它被CSP禁止。
然后我找到了the socket.io-client 。我对英语不是很熟悉,但据我所知,它涉及在没有服务器的情况下加载socket.io客户端脚本,对吗?
所以我尝试在我的background.html页面中加载脚本“socket.io-client / socket.io-client.js”,但chrome给我发错:
未捕获错误:无法从“root”
要求“socket.io”
我迷路了...... 在尝试更进一步之前,我只是问自己socket.io是否是在我的打包应用程序和Nodejs之间建立对话的好主意。
如果是,我如何在客户端加载和运行它?
修改: 我想知道我是否必须使用经典的Websocket而不是socket.io。我知道它适用于Packaged App,如here所示,但是需要更多的时间来开发socket.io给我们(传递objet)相同的功能。
感谢您的帮助:)
答案 0 :(得分:2)
试试这个,从node_modules获取socket.io.js:
$ find . -name socket.io.js
./node_modules/socket.io-client/dist/socket.io.js
将其与客户端库一起复制,然后将其包含在内:
<script type="text/javascript" src="js/libs/socket.io.js"></script>
如果您不介意长路径,请直接包含它。
答案 1 :(得分:2)
请勿在Chrome应用中使用socket.io进行低级套接字通信。使用chrome.sockets.tcp或chrome.sockets.tcpServer。
WebSockets是一种特殊的套接字协议,HTML5 WebSockets API在Chrome应用中运行良好。 (注意:WebSockets不是访问HTTP站点的方法,但它是一种更新的协议,仅适用于专门用于处理WebSocket客户端的服务器。)
对于HTTP,您不必使用chrome.sockets.tcp。你很可能会发现好的旧XMLHttpRequest可以做你想做的一切。