2012-03-13 90 views
22

我想在兩個或多個不同的node.js應用程序服務器之間啓用基於套接字的p2p通信。我使用socket.io來處理給定服務器和它所服務的Web應用程序之間的所有此類通信 - 但我正在尋找的是一種溝通服務器到服務器的方式。是否可以在node.js服務器上設置運行(服務器端)的socket.io客戶端?

我最初以爲它會像這樣的事情一樣容易:

var io = require("socket.io"); 
var socket = io.connect("my remote endpoint"); 

然而,事實證明在服務器端執行socket.io不提供「連接」的方法,只聽方法。

這是爲什麼?爲什麼我不能將節點應用程序服務器視爲運行在別處的socket.io服務器的客戶端?有什麼辦法可以實現這個功能嗎?

+3

是客戶端庫後,你只是什麼? https://github.com/LearnBoost/socket.io-client – pimvdb 2012-03-13 15:59:17

+0

我可以將其插入node.js應用程序嗎?我如何要求()它?據我所知,它是專爲基於瀏覽器的使用而設計的。 – Myk 2012-03-13 16:02:24

+0

看到這個S/O線程:http://stackoverflow.com/questions/6785979/socket-io-client-issues-require-socket-io-client-js-not-working – Myk 2012-03-13 16:04:20

回答

51

好吧,在上面的評論中感謝@pimvdb我有一個可行的解決方案。

基本上,npm安裝的socket.io庫對另一個模塊(稱爲socket.io-client)具有依賴性。在標準的socket.io安裝中,這將安裝在node_modules/socket.io/node_modules/socket.io-client

然而,也可以說「npm install socket.io-client」並將其安裝爲它的擁有一流的公民圖書館。

然後您的使用情況是這樣的:

var client = require("socket.io-client"); 
client.connect("http://myendpoint.com:3000/whatever"); 
client.emit("test", "foo"); 

和一切正常。

所以,謝謝你!

+7

+1發佈您找到的解決方案 – pimvdb 2012-03-13 18:06:21

+9

var client = require(「socket.io-client」); var socket = client.connect(「http:// localhost:3000」); 插座。發射(「測試」,「富」);' 這對我有效。 – nullbuilt 2015-10-22 09:02:23

2

在您全速運行socket.io以進行服務器到服務器通信之前..... socket.io被設計爲瀏覽器到服務器通信基礎架構。我很不確定這是P2P服務器的最佳解決方案。另外,如果你做服務器到服務器 - 爲什麼不只是做Websockets?有多種用於節點的websocket模塊 - 例如https://github.com/einaros/ws

+1

我明白所有這一切。情況是,我有一個基於socket.io的web應用程序,瀏覽器<->節點通信已經建立,並且構建了整個API。我希望能夠創建一個node.js的本地實例並將其連接到Arduino,然後將它作爲現有socket.io會話中的一個項目連接起來。那有意義嗎? – Myk 2012-03-14 18:32:20

+0

當然,聽起來很有趣。祝你好運。 – Mark 2012-03-14 19:01:46

6

只是爲了澄清,這是與聽衆和可能性爲例來發出事件(並且沒有重新安裝已經安裝的模塊)

var io = require('socket.io/node_modules/socket.io-client'); 

client = io.connect('http://'+CONFIG.host+':'+CONFIG.port); 

client.on('connect',function() { 
    client.emit("test","foo"); 
}); 
+0

因爲我對套接字是陌生的。如果在client.emit(「test」,「foo」)中,「foo」是一個流並且測試是一個blob,像這樣的client.emit(「blobs」,流)更清晰我正在尋找服務器端腳本(server.js)並設置門戶以獲取幫助!!? – 2017-01-07 09:57:44

相關問題