0

ウェブサイトに通知システムを構築しました。私はある種のメンバーのグループを持っています。グループのメンバーが何かを投稿すると、同じグループの他のメンバーに通知する必要があります。ユーザーがページを更新すると、通知が表示されます。しかし、世界はリアルタイムで進んでいます。問題をグーグルで検索すると、Node.jsが推奨されました(最善の方法はわかりません)。サーバーを作成し、データベースに接続し、データベースにクエリを実行し、socket.io を使用して接続されているすべてのクライアントにメッセージを送信することができます...
しかし、これまでに実行/理解できないことは、どのユーザーにメッセージ(通知)を配信する必要があります。
SOを見回すと、私が望むものに見えるこの方法が付属しています:

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 と同じですか? いくつかの簡単な解決策を探すのに本当に疲れました。助けていただければ幸いです。

4

3 に答える 3

1

以下は、socket.iodocsの例です。

クライアントに関連付けられたデータの保存

セッション中に必要なクライアントに関連付けられたデータを保存する必要がある場合があります。

サーバ側

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>
于 2012-08-16T18:28:54.703 に答える
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/ これは良いものです

于 2012-08-16T18:34:34.840 に答える
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');
});
于 2012-08-16T18:35:14.353 に答える