我可以在Chrome打包应用中使用socket.io吗?

时间:2013-12-15 10:51:45

标签: node.js google-chrome socket.io google-chrome-app

我需要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)相同的功能。

感谢您的帮助:)

2 个答案:

答案 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可以做你想做的一切。