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

How to know when channel is subscribed/unsubscribed with socket.io

本文关键字:取消 频道 订阅 io 何知道 socket      更新时间:2023-09-26

刚刚搜索了所有的网站,以找到如何在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");
    });
});

有可能吗?

您正在查找"socket.of('channelName')"。。。参见Socket.io文档

服务器:

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>