2011-10-05 127 views
1

我有一個服務器在端口8181上創建套接字。我想從Google Chrome 14中打開的網頁訪問套接字。我想這是不可能的。 Chrome爲Web套接字提供支持,但不支持標準套接字。是對的嗎?通過網絡套接字公開套接字

是有可能以某種方式創造那樣會暴露我的socket服務器偵聽端口8181的一些其他端口上運行的網絡套接字服務器的中介?

+0

在Node.js中,您可以創建服務器和客戶端。您可以創建一個應用程序,其中包括端口上的WebSockets服務器(例如8182)和連接到端口8181的客戶端。您只需將所有傳入數據(在解碼WebSockets格式後)路由到8181,並從8181接收所有數據轉換成WebSockets格式並傳遞給客戶端(Chrome)。 – pimvdb

+0

我想要更多的細節。你在建立你自己的服務器嗎?使用像Tomcat或Apache這樣的服務器? GlassFish應用程序服務器包括grizzly,它是一個websocket服務器。我現在正在調查它。壞消息(不應該永遠持續下去)是我還沒有找到任何工作實例。 –

+0

@mgamer,您的問題已得到充分回答? – kanaka

回答

6

websockify是一個通用的WebSockets到TCP套接字代理/網橋。我最初創建了websockify以允許noVNC(HTML5 VNC客戶端)能夠連接到未打補丁的VNC服務器。但它通常是有用的(不是VNC特定的),所以我把它作爲一個單獨的項目分離出來。

在UNIX/Linux系統,你將運行websockify這樣的:

./websockify 8080 my_server:8181 

8080端口在上面的例子是偵聽WebSocket連接的端口。 my_server是系統的名稱/ IP,您有一臺服務器在端口8181上進行偵聽。如果您在與服務器相同的系統上運行websockify,則可以使用localhost來代替'my_server'。

websockify項目還附帶一個名爲websock.js的Javascript包裝庫。 websockify支持新的協議版本(由Chrome 14+和Firefox 6+使用),但它也適用於舊版本。但是,使用舊版本的協議時,無法發送原始二進制數據(僅限UTF-8),因此websock.js和websockify一起使用時,base64會對數據進行編碼/解碼(在瀏覽器和websockify之間)較舊的協議,以便您仍可以將原始二進制數據發送到目標或從目標發送。

+0

但基於該網站鏈接的文檔,它不適用於Chrome 14. –

+0

@ RogerF.Gay,不確定您指的是哪個網站信息,但websockify在Chrome 14中可以正常工作。WebSockify適用於兩個Hixie版本和協議的所有HyBi版本(即它可以與任何種類的WebSocket支持的所有瀏覽器一起使用)。 – kanaka

+1

順便說一句,我已經更新了websockify自述文件,在協議和二進制數據支持上更加清晰。 – kanaka