2017-02-13 12 views
1

Добрый деньКак настроить сокет Ио и сокет Io клиент

Мне нужно подключить много ПК к главному серверу, через сервер единиц

hierarchy

У меня есть кое-что, но я не весь комплект

Главный сервер

socketIo = require("socket.io"), 
ioServer = socketIo(server), 
ioServer.sockets.on("connection",function(socket){ 
    // Display a connected message 
    console.log("Server-Client Connected!"); 
    // When we receive a message... 
    socket.on("message",function(data){ 
     // We got a message... I dunno what we should do with this... 
     console.log(data); 
     console.log(data.from + " is connected with ip " + data.ip); 
     socket.emit('message', { 'from': '10.19.17.101', 'answer':'I already added you '+data.from }); 
    }); 
}); 

Блоки сервера

socketIo = require("socket.io"), 
ioServer = socketIo(server), 
ioClient = require("socket.io-client")('http://10.19.17.101:7700') 
ioClient.on('connect', function(){ 
     ioClient.on('message',function(data){ 
      console.log(data.from + " answered: " + data.answer); 
      ioServer.to('pxe4').emit('message',data); 
     }); 
     ioClient.emit('message',{ 'from': 'pxe4', 'ip':'10.19.16.84' }); 
}); 

ioServer.sockets.on("connection",function(socket){ 
    // Display a connected message 
    console.log("User-Client Connected!"); 
    // When we receive a message... 
    socket.on("message",function(data){ 
     // We got a message... I dunno what we should do with this... 
     console.log(data); 
     console.log(data.from + " is connected with ip " + data.ip); 
     socket.emit('message', { 'from': '10.19.16.84', 'answer':'I already added you '+data.from }); 
     ioClient.emit("message",data); 
    }); 
    socket.on("disconnect",function(data){ 
     // We need to notify Server 2 that the client has disconnected 
     ioClient.emit("message","UD,"+socket.id); 
     // Other logic you may or may not want 
     // Your other disconnect code here 
    }); 

}); 

Units

ioClient = require("socket.io-client")('http://10.19.16.84:7770'), 
ioClient.on('connect', function(){ 
     ioClient.on('message',function(data){ 
     // We received a message from Server 2 
     // We are going to forward/broadcast that message to the "Lobby" room 
     console.log(data.from + " answered: " + data.answer); 
     }); 
     ioClient.emit('message',forsend); 
}); 

мне было интересно, если в этот момент я могу послать некоторую информацию от главного сервера к конкретному блоку?

Если кто-то может мне помочь, я буду благодарен.

ответ

1

При подключении каждого клиента к основному серверу или серверным модулям вы получаете объект сокета, который содержит socketid. Вы должны сохранить эти идентификаторы сокетов в некоторых хранилищах данных для быстрого доступа с информацией о сервере. Когда вам нужно передавать данные в конкретный сокет, вы должны запросить этот конкретный сокет из хранилища данных и испустить данные. При отключении вы должны вытащить этот конкретный сокет из хранилища данных

+0

Не могли бы вы привести пример с кодом? –

+0

уверен, дайте мне некоторое время, я обновлю свой ответ кодом –