2017-05-22 18 views
0

私は基本的にNode.jsサーバーを持っています。これは2つの他のサーバー間の仲介者として機能します。Socket.io node.js socket.emit not working

このような何かを行うことがその可能ならば、私は疑問に思って:

let matchSocket = ioClient.connect('http://localhost:5040'); 

http.listen(5030, function() { 
    console.log('Matchmaking server is now running.'); 
}); 

matchSocket.on('connect', function() { 

}); 

io.on('connection', function (socket) { 
    // Send event 'ev001' as a CLIENT 
    socket.on('ev001', function (data, callback) { 
     matchSocket.emit('start', { 
      message: 'message' 
      }); 
    } 
} 

この「サーバー」は、サーバとクライアントの両方です。このサーバーが 'ev001'というメッセージを受信した場合、別のメッセージを別のサーバーに転送したいと考えています。 >このサーバー(B) - - >スタート - >サーバーCが

は、あなたがその外の)ソケット位(発する機能を呼び出すことができます> ev001 -

サーバーA:

だから、それは次のようになり、ソケット自体の "socket#on()"関数?

答えて

0

はい、可能です。

は、ここで(多くのあなた「マッチメイキングサーバ」のように、ずっとあなたが接続しているリモートサーバー、およびまた5030上のサーバーのように、5040でリッスンサーバーを作成する)スタンドアローン版です:

const ioServer = require('socket.io'); 
const ioClient = require('socket.io-client'); 

// Your remote server. 
ioServer().listen(5040).on('connection', function(socket) { 
    socket.on('start', function(message) { 
    console.log('remote server received `start`', message); 
    }); 
}); 

// Connect to the "remote" server. 
let matchSocket = ioClient('http://localhost:5040'); 

// Local server. 
ioServer().listen(5030).on('connection', function(socket) { 

    // Send a message to the remote server when `ev001` is received. 
    socket.on('ev001', function(message) { 
    console.log('received `ev001`'); 
    matchSocket.emit('start', { message: 'message' }); 
    }); 
}); 

// Connect to the local server and emit the `ev001` message. 
ioClient('http://localhost:5030').emit('ev001');