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

问题描述 投票:24回答:3

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

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

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

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

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

javascript sockets node.js socket.io p2p
3个回答
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");

一切正常。

所以,谢谢你!


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

2
投票

在socket.io全速运行以进行服务器到服务器通信之前...... socket.io被设计为服务器通信基础设施的浏览器。我很不确定它是P2P服务器的最佳解决方案。另外,如果你做服务器到服务器 - 为什么不只是做Websockets?节点有各种websocket模块 - 例如https://github.com/einaros/ws

© www.soinside.com 2019 - 2024. All rights reserved.