关于为网站实施"存在"的建议?

jse*_*ims 2 nonblocking ejabberd user-presence node.js

理想情况下,我希望找到简单,轻量级的代码,允许连接到我的网站的所有Web客户端保持当前在线的其他人的实时状态.

我知道ejabberd这样做,但它也做了很多其他的事情,我更喜欢一个小的代码占用空间,所以我可以自定义和理解它的性能特征.

我喜欢node.js的非阻塞方面,并且想知道是否有一个开源项目可以完成所有这些逻辑.

我还想看到一个在客户端维护这个模型的JavaScript实现.

fen*_*ent 5

对于实时状态,请使用socket.io.每次有人连接时都会将它们添加到连接用户列表中.要获得准确的统计信息,您需要跟踪用户会话.见http://www.danielbaulig.de/socket-ioexpress/

var onlineUsers = {};
var online = 0;

io.sockets.on('connection', function (socket) {
  onlineUsers[socket.handshake.sessionID] = socket.handshake.session;
  online = Object.keys(onlineUsers).length;
  socket.broadcast.emit('online', online);

  socket.on('disconnect', function () {
    delete onlineUsers[socket.handshake.sessionID];
    online--;
    socket.broadcast.emit('online', online);
  });
});
Run Code Online (Sandbox Code Playgroud)