是否有拦截来自客户端服务器的所有 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 数据的功能的主要内容,如果未能解决你的问题,请参考以下文章

反向代理模式 Apache 拦截或捕获来自后端服务器的 302 响应并在内部重定向而不将 302 响应发送回客户端

在 GRPC 中拦截/记录请求和响应

拦截 RESTful Web 服务的工具

grpc swift客户端拦截器提议

DDP 呼叫拦截

拦截所有 GCM 推送消息(适用于任何应用程序)