3

理想的には、自分のサイトに接続されているすべての Web クライアントが、現在オンラインになっている他のユーザーのステータスをリアルタイムで維持できる、シンプルで軽量なコードを見つけたいと考えています。

ejabberd がこれを行うことは知っていますが、他の多くのことも行います。パフォーマンス特性をカスタマイズして理解できるように、コードのフットプリントを小さくしたいと考えています。

私は node.js の非ブロッキングの側面が好きで、このすべてのロジックを実行するオープン ソース プロジェクトがあるかどうか疑問に思っていました。

また、クライアント側でこのモデルを維持するための JavaScript 実装も見たいと思っています。

4

2 に答える 2

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);
  });
});
于 2011-12-29T00:02:52.000 に答える