获取我的socket.io监听器的名称

时间:2016-08-21 04:01:54

标签: socket.io

我的页面上有一堆socket.io监听器,如下例所示:

    var socket = io.connect('/');  

    socket.on('listner1', function (data) { 
        // some stuff here
    });
    socket.on('listner2', function (data) { 
        // some stuff here
    });
    socket.on('listner3', function (data) { 
        // some stuff here
    });

如何编写一个能列出我听众名字的函数?

function getListenerNames(){
// print out listener names here
}

1 个答案:

答案 0 :(得分:2)

在服务器socket.eventNames()上将获得安装了侦听器的事件名称列表。

socket.io服务器套接字继承自EventEmitter,因此它来自.on(),它具有EventEmitter对象的所有方法。您可以看到其他EventEmitter方法here

在客户端,socket.io似乎使用EventEmitter接口的“轻型”版本,您可以看到here in the emitter doc that it uses。您可以使用以下命令获取与每个事件关联的侦听器函数:

socket.listeners("connect");

您传递了您感兴趣的活动名称。

整个数据结构(如果你想直接搞乱它)似乎存储在socket._callbacks,但是没有记录,可能会有变化。