如何知道使用socket.io订阅/取消订阅频道的时间

时间:2012-09-07 03:02:52

标签: javascript node.js socket.io

刚搜索了所有网页,找到在订阅或取消订阅频道时如何在node.js服务器内部进行跟踪。我所知道的是连接和断开连接,但不知道如何使用通道。

io.sockets.on('connection', function (socket) {
    console.log("["+socket.id+"] Connected");

    // handler to know when a socket subscribed a channel (*) ?
    // handler to know when a socket unsubscribed a channel (*) ?

    socket.on('disconnect', function () {
        console.log("["+socket.id+"] Disconnect");
    });
});

有可能吗?

1 个答案:

答案 0 :(得分:2)

您正在寻找“socket.of('channelName')”...... 见Socket.io docs

SERVER:

var io = require('socket.io').listen(80);

var chat = io
  .of('/chat')
  .on('connection', function (socket) {
    socket.emit('a message', {
        that: 'only'
      , '/chat': 'will get'
    });
    chat.emit('a message', {
        everyone: 'in'
      , '/chat': 'will get'
    });
  });

var news = io
  .of('/news')
  .on('connection', function (socket) {
    socket.emit('item', { news: 'item' });
  });

客户端:

<script>
  var chat = io.connect('http://localhost/chat')
    , news = io.connect('http://localhost/news');

  chat.on('connect', function () {
    chat.emit('hi!');
  });

  news.on('news', function () {
    news.emit('woot');
  });
</script>