有个表 a
-------------
| uid | sum |
-------------
| 1 | 20 |
-------------
| 2 | 36 |
-------------
| 3 | 88 |
-------------
有操作(加减乘除)后值可能变为
-------------
| uid | sum |
-------------
| 1 | 15 |
-------------
| 2 | 40 |
-------------
| 3 | 80 |
-------------
所有人都可以操作(加减乘除),但只推送给表中的各个用户各自不同的值。
推送给自己、推送给其他人、推送所有人 socket.io 都有实现了,也都比较容易,就是这个没想明白。
在某个页面(用户中心)实时显示各个用户 sum 值,有操作后如何推送各自的值到页面?
-----------更新------------------------
用户在页面(用户中心)只能看到自己的 sum 值
在监听客户端connection的时候把客户端信息给到socket,这样就能在监听消息时从sockets集合中过滤出需要推送的客户端了,下面的代码可以参考下
//import express var app = require(‘express’)(); var http = require(‘http’).Server(app); //import socket.io var io = require(‘socket.io’)(http);
//启动客户端连接监听 io.on(‘connection’, function (socket) { socket.on(“clientInfo”, function (result) { socket.clientInfo = result.clientInfo; socket.emit(“getSend”, { msg: “connection ok” }); });
socket.on('sendMsg', function (data) {
io.sockets.sockets.forEach(function (s) {
//找到对应的用户客户端
if (data.users != null && data.users.length > 0) {
var users = data.users.split(",");
users.forEach(function (userid) {
if (s.id != socket.id && s.clientInfo != null && s.clientInfo.UserID == parseInt(userid)) {
s.emit("getSend", { msg: "您有一条新消息!" });
}
else {
}
});
}
});
});
socket.on('disconnect', function () {
console.info(socket.id + ' disconnect');
});
});
@baka397 不是。是任何人都可以操作提交到服务器,服务器在推送到 a 表中的用户对应的客户端。 我还没有做到这样的解决方式,好糗。我会继续寻找解决的。
目前我是这样做的: 操作提交到服务器,我查询出所有 a 表相关数据,做出数组推送到其他所有客户端,客户端在比对相应用户才显示。