Is it possible to set up a socket.io client running (server-side) on a node.js server?

南笙酒味 提交于 2019-11-27 00:36:52

问题


I'd like to enable socket-based p2p communications between two or more different node.js application servers. I'm using socket.io to handle all such communication between a given server and the web application it serves - but what I'm looking for is a way to communicate server-to-server.

I had initially assumed it would be as easy as something like this:

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

However, as it turns out the server-side socket.io implementation doesn't offer a "connect" method, only a listen method.

Why is this? Why can't I treat a node application server as a client to a socket.io server running elsewhere? Is there any way that I can achieve this functionality?


回答1:


OK, so thanks to @pimvdb in the comments above I've got a workable solution.

Basically, the socket.io library that npm installs has a dependency on another module, called socket.io-client. In a standard socket.io installation this will be installed in node_modules/socket.io/node_modules/socket.io-client

However, it's also possible to say "npm install socket.io-client" and install it as its own first-class citizen library.

Then your usage looks like this:

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

And everything works.

So, thanks man!




回答2:


Just for clarification, this is an example with listeners and possibility to emit events (and without install again a module already installed)

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



回答3:


Before you go full speed on socket.io for server-to-server communications..... socket.io is engineered as a browser to server comm infrastructure. I'm far from certain it is the best solution for P2P server stuff. Plus, if you do server-to-server - why not just do Websockets? There are various websocket modules for node - e.g. https://github.com/einaros/ws



来源:https://stackoverflow.com/questions/9687561/is-it-possible-to-set-up-a-socket-io-client-running-server-side-on-a-node-js-s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!