是否可以在node.js服务器上设置一个运行(服务器端)的socket.io客户端?

我想在两个或多个不同的node.js应用程序服务器之间启用基于套接字的p2p通信。 我使用socket.io来处理给定的服务器和它所服务的Web应用程序之间的所有这种通信 – 但是我正在寻找的是一种沟通服务器到服务器的方式。

我最初认为它会像这样简单:

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

但是,事实certificate,服务器端的socket.io实现不提供“连接”方法,只有一个监听方法。

为什么是这样? 为什么我不能将节点应用程序服务器作为运行在别处的socket.io服务器的客户端? 有什么办法可以实现这个function吗?

好的,在上面的评论中感谢@pimvdb,我有一个可行的解决scheme。

基本上,npm安装的socket.io库依赖于另一个叫做socket.io-client的模块。 在标准的socket.io安装中,这将安装在node_modules / socket.io / node_modules / socket.io-client

但也可以这样说:“npm install socket.io-client”,并将其安装为自己的一stream公民图书馆。

然后你的用法如下所示:

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

一切正常。

所以,谢谢你!

只是澄清,这是一个听众的例子,并可能发出事件(没有再安装一个模块已经安装)

 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"); }); 

在全速发展socket.io服务器到服务器通信之前….. socket.io被devise为浏览器到服务器通信基础架构。 我很不确定这是P2P服务器的最佳解决scheme。 此外,如果你做服务器到服务器 – 为什么不只是做Websockets? 有多种节点的websocket模块 – 例如https://github.com/einaros/ws