在 socket.io-client 的客户端上向 self 发送事件

Posted

技术标签:

【中文标题】在 socket.io-client 的客户端上向 self 发送事件【英文标题】:Emitting events to self on the client for socket.io-client 【发布时间】:2016-10-14 15:29:18 【问题描述】:

在旧版本的 Socket.IO(namespace 在其原型中包含 $emit 函数。我还没有正确理解这一点,但是有了这个,来自客户端的事件可以在本地发送到同一个客户端。

但是,在最新版本的 Socket.IO 中,在 Socket 模块之外无法访问发射函数。

问题是:还有办法从客户端向自身发出事件吗?

【问题讨论】:

您真正想解决什么问题?您始终可以通过 EventEmitter.prototype.emit() 访问原始 eventEmitter .emit(),并可以使用 .call() 将其应用于任何 EventEmitter 对象。 我正在尝试将使用旧版本 socket.io (0.9.x) 的代码更新为 socket.io (1.4.x)。然而,他们有一个代码,他们从客户端发出事件,这些事件被自己监听。因此,由于使用旧版本的 socket.io,发射器可以在命名空间模块之外访问,这只需调用 $emit 函数即可。但是对于较新的版本,相同的发射器不再可用。因此,问题。另外,您提供的答案确实解决了这个问题。非常感谢。 【参考方案1】:

我会将我的评论作为答案,因为它似乎帮助您解决了问题。

如果您想访问原始的.emit() 方法,您可以从EventEmitter.prototype.emit() 获取它并使用.call() 在具有相应事件处理程序的相应对象上调用它。

EventEmitter.prototype.emit.call(someObj, "myMsg", mydata);

【讨论】:

谢谢你的回答,但我必须确认。在浏览器端调用EventEmitter是不可能的吧?

以上是关于在 socket.io-client 的客户端上向 self 发送事件的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]

Socket.IO 客户端如何连接?

python-socketio 客户端无法获取公共数据,但 NodeJS socket.io-client 没有

错误:找不到模块'socket.io-client / dist / socket.io.min.js'

Socket.io-client 未连接到 socket.io 服务器反应和节点(快递)

无法在 Angular 项目中导入 socket.io-client