2013-12-15 156 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可以做你想做的一切。

相關問題