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

Myk*_*Myk 24 javascript sockets p2p node.js socket.io

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

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

var io = require("socket.io");
var socket = io.connect("my remote endpoint");
Run Code Online (Sandbox Code Playgroud)

但是,事实证明服务器端socket.io实现不提供"连接"方法,只提供listen方法.

为什么是这样?为什么我不能将节点应用程序服务器视为在其他地方运行的socket.io服务器的客户端?有什么办法可以实现这个功能吗?

Myk*_*Myk 56

好的,所以感谢上面评论中的@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");
var socket = client.connect("http://myendpoint.com:3000/whatever");
socket.emit("test", "foo");
Run Code Online (Sandbox Code Playgroud)

一切正常.

所以,谢谢你!

  • `var client = require("socket.io-client"); var socket = client.connect("http:// localhost:3000"); socket.emit("test","foo");`这对我有用. (12认同)

Luc*_*one 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");
}); 
Run Code Online (Sandbox Code Playgroud)