2012-03-13 95 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

相关问题