我是node.js / express和all的新手,我希望能够通过浏览器向浏览器中的任何客户端通知从后端的某些算法收到的新消息。发布者算法连接到websocket并写入消息。
据我所知,有些例子推荐使用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 :(得分:0)
在一些试验/错误迭代后找到答案。
该算法现在对URL进行POST,然后通过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