2015-06-18 8 views
0

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

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

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

  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)); 
      }); 

Спасибо

ответ

0

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

Алгоритм теперь выполняет 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