Как я могу запустить код faye-websockets в браузере?

Я новичок в node.js/express и во всем, и я хочу иметь возможность уведомлять любых клиентов в браузере о новом сообщении, полученном от некоторого алгоритма в бэкэнде. Алгоритм издателя подключается к веб-сокету и записывает сообщение.

Насколько я видел, были примеры, которые рекомендовали веб-сокеты, но я не смог запустить этот код в браузере только в консоли.

Пример кода клиента:

            var WebSocket = require('faye-websocket');
            var ws  = new WebSocket.Client('ws://localhost:1234');
            var http = require('http');

            var port = process.env.PORT || 1235;

            var server = http.createServer()
                .listen(port);

            // receive a message from the server
            ws.on('message', function(event) {
                alert(JSON.parse(event.data));
            });

Спасибо


person emmerich    schedule 18.06.2015    source источник


Ответы (1)


Нашел ответ после нескольких итераций проб/ошибок.

Алгоритм теперь выполняет POST для URL-адреса, который, в свою очередь, запускает запись в сокеты для всех подключенных клиентов через socket.io.

Код клиента:

var socket = io('http://localhost:7777');
socket.on('message', function (msg) {
    document.body.insertAdjacentHTML( 'beforeend', '<div id="myID">'+msg+'</div>' );
});

И на сервере, когда клиент подключается, я сохраняю его сокет в массив, чтобы я мог писать каждому:

Код сервера:

io.on('connection', function(socket){
console.log('a user connected: '+socket.id);
var id = clientCount++;
clientSockets[id] = socket;

socket.on('disconnect', function(){
    console.log('user disconnected');
    delete clientSockets[id];
    socket = null
});

});
app.post('/alerts', function(req, res) {
req.accepts(['json', 'application']);
console.log("Algo did a POST on /alerts!");
// send the message to all clients
//console.log(req.body);
for(var i in clientSockets) {
    clientSockets[i].send(JSON.stringify(req.body));
}
res.send(200);
});

В заключение, я использую не faye-websockets, а socket.io.

person emmerich    schedule 19.06.2015