在 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 时出错 [重复]
python-socketio 客户端无法获取公共数据,但 NodeJS socket.io-client 没有
错误:找不到模块'socket.io-client / dist / socket.io.min.js'