2012-12-18 26 views
5

我不禁感到這必須在某個地方回答,但是如果我能找到它,我就會生氣。部分問題可能是客戶方面有太​​多的討論讓我看到樹木。用於NodeJS的Web套接字服務器端實現

無論如何,道歉一邊,這是我想要做的。我需要一個平臺獨立的WebSockets服務器端實現。我希望它在NodeJS中運行。

現在,我在這個主題上發現的99%關於socket.io。但據我所知,這不是WebSockets,它本身就是一個特殊的「額外」協議。我需要一些「通過(尚未)標準」的方法。有一個很好的理由,這是不可議付的,相信我,讓我們只是保存帶寬:)

所以,我試過WebSocket,但這需要(或似乎需要python和,更糟糕的是,視覺Studio)在Windows上運行。我需要一些獨立於平臺的東西,並不需要特殊的東西。

我也嘗試過node-websocket-server,但是我無法完成這項工作。主頁上的示例對我而言不合格。它似乎接受連接,但客戶端沒有看到它,任何一方都不會發送任何內容,並且客戶端立即將該連接視爲關閉。事實上,我所得到的只是一個「連接」回調,然後它似乎死亡。在調試模式下運行並沒有告訴我任何有用的信息,除了某些對象或其他沒有flush()方法的內部錯誤。我懷疑這是一個已經失效的項目?

所以,我沒有想法。是否有可能說服socket.io純粹通過WebSockets的(非)規範工作?有沒有辦法讓node-websocket-server的行爲發生,我找不到。有沒有辦法繞過websocket中的Visual Studio依賴項,還是有其他一些基於NodeJS的工具可以滿足我所有的需求?

哦,另外一件事,我希望該工具能夠與「連接」和平共存,因爲我正在使用該工具來處理常規文檔。

TIA, 託比

回答

4

我有你面對的那一刻,當我試圖在不同的平臺上使用Socket.IO無客戶端的直接端口完全相同的問題(和不我自己移植的動機)。

我結束了我的移動代碼中使用WS這是節點的基於標準的WebSocket實現,而不從socket.io加了糖。

它的工作原理非常好,在我的情況在幾個不同的平臺,但你需要返工大多數連接/重新連接代碼等

網站:link

GitHub上:link

NPM: npm install ws

+0

好的,謝謝,我會給你一個去(抱歉,延遲承認,我是出城)。 –

0

Socket.io在封面下使用WS,所以您可能會在Windows上遇到相同的安裝問題。您可能會發現它抱怨說您需要安裝Visual Studio 2010才能使ws組件正常工作。

但是,您可以配置通過環境變量運行C++編譯器的node-gyp使用的Visual Studio版本。

例子:

  • 設置GYP_MSVS_VERSION=2012爲Visual Studio 2012
  • 設置GYP_MSVS_VERSION=2013e(在 'E' 代表 'Express版')

有關完整列表,請參閱 - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

這對於NodeJS的Windows用戶來說是一件很痛苦的事情,因爲它假設你有一個Visual Studio副本使許多非開發用戶永遠不會擁有。因此,我正在向Joyent遊說,鼓勵他們將CORBA節點的網絡套接字包含在內,並且將GNU gcc編譯器作爲NodeJS安裝的一部分發布,以便我們可以永久解決此問題,而不必強制Windows節點用戶調整它們環境或下載其他任何東西。

隨意在添加您的投票:

注:Joyent的團隊已經表示,socket.io將回落到編譯ws失敗時使用較慢的實現。換句話說,你的代碼仍然會運行 - 只是速度不夠快。對於最終用戶執行安裝依賴於socket.io或ws的任何應用程序的安裝,這並不清楚,因爲它在安裝過程中顯示紅色錯誤文本,導致用戶認爲安裝失敗,實際上它會運行緩慢。