是否有拦截来自客户端服务器的所有 socket.io 数据的功能
Posted
技术标签:
【中文标题】是否有拦截来自客户端服务器的所有 socket.io 数据的功能【英文标题】:Is there a function to intercept all socket.io data from the server on clientside 【发布时间】:2014-11-22 22:13:45 【问题描述】:socket.io 客户端代码可以使用这个
var socket = io('http://localhost:8888');
socket.on('news', function (data)
socket.emit('my other event', my: 'data' );
);
但我想拦截来自 socket.io 的服务器发出的所有数据,不仅是新闻,然后处理数据。那可能吗。
【问题讨论】:
【参考方案1】:您想要注册“socket”发出的所有事件。 这个问题被广泛讨论here。在 socket.io 代码中这是不行的,但评论者建议了一些方法来做到这一点。
您最好的选择可能是关注this path:
(function()
var emit = socket.emit;
socket.emit = function()
console.log('***','emit', Array.prototype.slice.call(arguments));
emit.apply(socket, arguments);
;
var $emit = socket.$emit;
socket.$emit = function()
console.log('***','on',Array.prototype.slice.call(arguments));
$emit.apply(socket, arguments);
;
)();
请查看链接的主题以获取更多信息。
您可以找到更多信息 here 以了解其他一些方法。
【讨论】:
这对我不起作用。客户端 socket.io.js 有一个函数可以让访问正是我想要的 //Socket.prototype.onPacket = function (packet) ;但是如何访问该功能。 我使用来自 [link]github.com/automattic/socket.io-client 的 socket.io.js 1.1.0。我没有旧版本中的 socket.$emit 函数。以上是关于是否有拦截来自客户端服务器的所有 socket.io 数据的功能的主要内容,如果未能解决你的问题,请参考以下文章