2016-05-31 7 views
0

Я хочу, чтобы мой клиентский код отправлял серверу userid пользователя при установлении соединения, а затем я хочу, чтобы сервер проверял базу данных на новые сообщения для каждого пользователя, которые подключается и отправляет пользователю количество новых сообщений, которое оно имеет, когда доступны новые сообщения.Отправить сообщение от клиента к серверу по соединению node.js

Мой клиентский код:

var socket = io.connect('http://localhost:8000'); 
socket.on('connect', function() { 
     socket.emit('userid', '1'); 
}); 

socket.on('new_message', function (data) { 
     var number_of_messages= "<p>"+data.number+"</p>"; 
     $('#container').html(number_of_messages); 
}); 

Мой код на стороне сервера:

io.sockets.on('userid', function (data) { 

console.log('userid: '+data); 

}); 

Моя проблема заключается в том, что приведенный выше код не работает: идентификатор пользователя никогда не принимается ServerSide и on ('userid') никогда не вызывается. Мой вопрос заключается в том, как узнать, какой сокет отправил этот идентификатор пользователя и как отправить только этому конкретному сокету определенное сообщение.

+0

Вероятно, вам следует начать, взглянув на [документацию] (http://socket.io/docs/). – robertklep

+0

@robertklep Я сделал это не помогло –

ответ

1

Я решил проблему, сохранив сокет клиентов и их идентификатор в глобальном массиве. это нехорошее решение, но оно работает; Я знаю, что есть комнаты и пространства имен, но я никогда не использовал его ..

socket.io namespaces and rooms

однако

(я использовал экспресс)

клиент:

var socket = io.connect('http://localhost:3000',{reconnection:false}); 
    socket.once('connect', function() { 
     socket.emit('join', '#{id}'); 
    }; 

сервер:

var clients = [];  

app.io.on('connection', function(socket) { 

socket.on('join', function(data) { 
     clients.push({ 
      ws: socket, 
      id: data 
     }); 
     //retrive the messages from db and loop the clients array 
     //and socket.send(things) 
    } 
} 
+0

Я использовал ваше решение .. спасибо, что это сработало !! –