我在我的网站上建立了一个通知系统。我有一些成员团体。当一个小组成员发布某些内容时,应通知同一小组的其他成员。用户刷新页面时会显示通知。然而,世界正在实时进行。谷歌问题推荐我Node.js(不确定是最好的方法)。我现在可以:创建服务器,连接到数据库,查询数据库,使用socket.io向所有连接的客户端发送广泛的消息...
但到目前为止我无法做到/理解的是指定应该向哪个用户发送消息(通知)
通过这种方式来看看我想要的东西:
var socket = io.listen(server);
socket.on('connection', function(client) {
client.on('message', function(msg) {
broadcast(msg); // broadcast message to all clients
// OR
socket.clients[session_id].send(msg); // send message to one client
});
client.on('disconnect', function( ) {
console.log('Client Disconnected.');
});
});
我不知道session_id是什么,它是否与登录时创建的用户的session_id相同? 真的很累,寻找一些直接的解决方案,任何帮助将非常感激。
答案 0 :(得分:1)
这是socket.io docs的一个例子:
存储与客户关联的数据
有时需要在会话期间存储与客户相关的数据。
服务器端
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.on('set nickname', function (name) {
socket.set('nickname', name, function () { socket.emit('ready'); });
});
socket.on('msg', function () {
socket.get('nickname', function (err, name) {
console.log('Chat message by ', name);
});
});
});
客户端
<script>
var socket = io.connect('http://localhost');
socket.on('connect', function () {
socket.emit('set nickname', prompt('What is your nickname?'));
socket.on('ready', function () {
console.log('Connected !');
socket.emit('msg', prompt('What is your message?'));
});
});
</script>
答案 1 :(得分:1)
创建房间,多个客户可以是多个房间的一部分,房间内的客户可以向房间的所有其他成员广播。
假设您的邮件中包含房间名称和数据正文
socket.on('connection', function(client) {
client.on('message', function(msg) {
// broadcast message to all clients
io.sockets.in(msg.room).emit(msg.data);
// OR
socket.clients[session_id].send(msg); // send message to one client
});
client.on('disconnect', function( ) {
console.log('Client Disconnected.');
});
});
https://github.com/LearnBoost/socket.io 这应该有一些例子
http://psitsmike.com/2011/10/node-js-and-socket-io-multiroom-chat-tutorial/ 这是一个很好的
答案 2 :(得分:1)
Socket.IO非常易于使用。
请查看此处的文档:https://github.com/learnboost/socket.io/
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.join('justin bieber fans');
socket.broadcast.to('justin bieber fans').emit('new fan');
io.sockets.in('rammstein fans').emit('new non-fan');
});