2013-12-15 299 views
4

我需要Chrome Packaged应用程序和NodeJS脚本之间的socket.io连接。我熟悉NodeJS和socket.io,但不适用于Chrome Packaged App。我可以在Chrome Packaged应用程序中使用socket.io吗?

这似乎很难(我还没有找到任何文件解释如何做到这一点)。 我首先尝试简单地加载从我的NodeJS(http://localhost:8080/socket.io/socket.io.js)提供的socket.io.js脚本。但是CSP禁止它。

然后我发现the socket.io-client。我对英文不是很熟悉,但是我知道它会处理在没有服务器的情况下加载socket.io客户端脚本,对吧?

所以我尝试加载脚本 “socket.io的客户端/ socket.io-client.js” 在我background.html页面而Chrome给我一个错误:

Uncaught Error: failed to require "socket.io" from "root"

我迷路了... 在尝试进一步尝试之前,我只问自己,socket.io是在Packaged App和Nodejs之间建立对话的好主意。

如果是这样,我怎么能加载和运行它的客户端?

编辑: 我不知道我是否必须使用经典的Websocket而不是socket.io。我知道它适用于Packaged App,如here所示,但是它需要更多时间来开发socket.io提供的相同功能(传递objet)。

谢谢您的帮助:)

+0

你有没有看到这篇文章http://stackoverflow.com/questions/17757728/where-is-the-socket-io-client-side-js-file-located? –

+0

是的,我现在就是这一切。但是对于Chrome Packaged应用程序,我无法加载外部脚本以确保安全性。 –

+0

我有一个应用程序,我手动包含了socket.io.js客户端,它的工作原理见下图。这将有可能在Chrome网页应用程序中工作 –

回答

2

试试这个,拿socket.io.js从node_modules:

$ 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> 

或者直接包括它,如果你不介意漫长的道路。

2

请勿在Chrome Apps中使用socket.io进行底层套接字通信。使用chrome.sockets.tcp或chrome.sockets.tcpServer。

WebSockets是一种特殊的套接字协议,并且HTML5 WebSockets API在Chrome应用程序中正常工作。 (注意:WebSocket不是访问HTTP站点的一种方式,但是是一种更新的协议,仅适用于专门编程处理WebSocket客户端的服务器。)

对于HTTP,您不必使用chrome.sockets.tcp 。你很可能会发现很好的XMLHttpRequest可以做你想做的一切。

相关问题