Задать вопрос

Как сделать отправку сообщения только одному пользователю?

Всем привет. На днях захотел сделать приложение, которое имело возможность обмениваться сообщениями с пользователями. Суть этого приложения состоит в том, что пользователь регистрируется, у него профиль, а в его профиле
можно написать открытое сообщение любым авторизованным пользователям. Все страницы сверстал, все сообщения отправляются в БД через ajax, вообщем всё как надо. Не так давно начал изучать nodejs. И захотел, чтобы сообщения приходили в реальном времени. Для этого стал использовать sockjs. И написал server.js:

var http = require('http');
var sockjs = require('sockjs');

var clients = {};

// Broadcast to all clients
function broadcast(){
    // iterate through each client in clients object
    for (var client in clients){
        // send the message to that client
        clients[client].write(null);
    }
};

// create sockjs server
var echo = sockjs.createServer();

// on new connection event
echo.on('connection', function(conn) {

    // add this client to clients object
    clients[conn.id] = conn;

    // on receive new data from client event
    conn.on('data', function() {
        broadcast();
        console.log('');
    });

    // on connection close event
    conn.on('close', function() {
        delete clients[conn.id];
    });

});
// Create an http server
var server = http.createServer();

// Integrate SockJS and listen on /echo
echo.installHandlers(server, {prefix:'/echo'});

// Start server
server.listen(3333, '0.0.0.0');


И в обыкновенном js файле прописал следующий код:

var sock = new SockJS('http://localhost:3333/echo');

// Open the connection

sock.onopen = function() {
    console.log('open');
};

// On connection close

sock.onclose = function() {
    console.log('close');
};


sock.onmessage = function(e) {

    var parentElem = document.getElementById('main');
    var newDiv = document.createElement('div');

    getMessage(getXmlHttp(), document.getElementById('message'), document.querySelector('.login'));

    parentElem.insertBefore(newDiv, parentElem.firstChild);
};


В итоге получается, что у меня сообщения отправляются ко всем авторизованным пользователям. А надо чтобы сообщения отправлялись к данному пользователю. Например, мы находимся на localhost/chat/?user=leha .и мы отправляем ему сообщение,но получается так, что мы отправляем сообщения всем пользователям, которые находятся на странице localhost/chat/ в данное время. Если есть какие-нибудь предложения, можно направить ссылками или подсказками.

Спасибо, skver91
  • Вопрос задан
  • 2830 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@skver91 Автор вопроса
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 14:07
15000 руб./за проект
22 дек. 2024, в 13:01
50000 руб./за проект
22 дек. 2024, в 10:44
15000 руб./за проект