WebSocket - nodejs
Здравствуйте! Начну с предисловия. Я javascript программист. Достаточно многому уже научился т.к. программирую 2 года. Решил забацать чат приложение на WebSocket в nodejs. Я решил, что технология перспективная, с WS можно будет делать и игры, чаты, приложения, в общем гора всего всего интересного. В чем же проблема? Я нашел много реализаций WebSocket чат - сервер на ноде приложений. Большинство из них не работают или используют библиотеки. Вообще не понял как они подключаются через npn менеджер (открываю его, а он в свою очередь закрывается). Неужели нельзя сделать сервер WS на nodejs без доп. библиотек? В общем, я жутко с этим все задолбался, не нашел нормальной документации (про обычные сервера на ноде полно). Прошу помощи, мне всего то надо понять как сделать простой эхо сервер на nodejs + простой клиент (таких уже много имеется из примеров). Спасибо заранее...
|
Разве использование библиотек -- это зло?..
В данном случае библиотеки облегчают жизнь, поскольку пока еще у некоторых браузеров есть проблемы с совместимостью, а библиотеки помогают это учесть. Для решения подобной задачи мне помогла библиотека sockjs, она проста в применении и легка по объему. Использование npm - жизненно необходимо, ибо легче чем npm install sockjs пока еще ничего не придумано... А что конкретно не получается, можно код увидеть? |
Ура! Я все понял и сделал, поднял чат на локальной сети (использовал пример с этого сайта). Вот только интересно, как сделать в этом коде:
var WebSocketServer = new require('ws');
var WebSocketServer = new require('ws');
// подключенные клиенты
var clients = {};
// WebSocket-сервер на порту 8081
var webSocketServer = new WebSocketServer.Server({port: 8081});
webSocketServer.on('connection', function(ws) {
var id = Math.random();
clients[id] = ws;
console.log("новое соединение " + id);
ws.on('message', function(message) {
console.log('получено сообщение ' + message);
for(var key in clients) {
clients[key].send(message);
}
});
ws.on('close', function() {
console.log('соединение закрыто ' + id);
delete clients[id];
});
});
такую штуку, т.е. чтобы можно было присваивать имена клиентам какие они выберут при открытии чата. На клиенте просто будет переменная с ником, а ее при подключении нужно отправить серверу и присвоить клиенту в списке клиентов. |
| Часовой пояс GMT +3, время: 23:46. |