在 socket.io 上从客户端捕获所有事件“发出”
Posted
技术标签:
【中文标题】在 socket.io 上从客户端捕获所有事件“发出”【英文标题】:Catch all event "emit" from the client on socket.io 【发布时间】:2014-11-07 09:54:03 【问题描述】:我在我的项目中使用 Socket.io 1.0,我想在服务器上绑定任何事件,例如:
socket.on('*')
所以我可以在我的客户端上这样做:
socket.emit('forum.post')
并且服务器将调用对象“论坛”的函数“发布”。那将是在我的项目中有一个更好的组织。使用我在网上找到的一些方法,我会这样做来覆盖 socket.io 函数:
var onevent = socket.onevent;
socket.onevent = function()
console.log('***','on',Array.prototype.slice.call(arguments));
onevent.apply(socket, arguments);
;
但 socket.on('*') 永远不会被调用。
【问题讨论】:
查看这个话题***.com/questions/10405070/… 应该很容易使用github.com/turbonetix/socket.io-events 【参考方案1】:对我有用的解决方案(socket-io v1.3.5)。
var Emitter = require('events').EventEmitter;
var emit = Emitter.prototype.emit;
// [...]
var onevent = socket.onevent;
socket.onevent = function (packet)
var args = packet.data || [];
onevent.call (this, packet); // original call
emit.apply (this, ["*"].concat(args)); // additional call to catch-all
;
@Matthias Hopf 问题的解决方案:Socket.io Client: respond to all events with one handler?
【讨论】:
以上是关于在 socket.io 上从客户端捕获所有事件“发出”的主要内容,如果未能解决你的问题,请参考以下文章