javascriptsocket.io

Socket IO Server to Server


Is it possible for a server to connect to another using Socket.IO and be treated like a client?

And have it join rooms, recieve io.sockets.in('lobby').emit(). And more?

The first server is also listening for connections/messages as well.

Hey Brad, here's my full .js app below for reference:

var io = require("socket.io").listen(8099);
io.set('log level', 1);

io.sockets.on("connection", function (socket) {
    
    console.log('A Client has Connected to this Server');
    
    //Let Everyone Know I just Joined   
    socket.broadcast.to('lobby').emit("message",'UC,' + socket.id); // Send to everyone in Room but NOT me  
        
  
socket.on("message", function (data) {

//Missing code
socket2.send('message,' + data); //Forward Message to Second Server

});
    
socket.on("disconnect", function (data) {
    //Send Notification to Second Server
    //Need to figure out later
    
    //Send Notification to Everyone
    socket.broadcast.emit("message",'UD,' + socket.id ); //Send to Everyone but NOT me
        
    //Remove user from Session ID
    arSessionIDs.removeByValue(socket.id);      
    
    //Send Notification to Console
    console.log("disconnecting " + arRoster[socket.id][1]);
});

});

var io_client = require( 'socket.io-client' );
var socket2 = io_client.connect('http://192.168.0.104:8090');
socket2.on('connect', function () {
socket2.emit('C3434M,Test');
});

Solution

  • Yes, absolutely. Just use the Socket.IO client in your server application directly.

    https://github.com/LearnBoost/socket.io-client

    You can install it with npm install socket.io-client. Then to use:

    var socket = io.connect('http://example.com');
    socket.on('connect', function () {
      // socket connected
      socket.emit('server custom event', { my: 'data' });
    });