一个典型的Redis聊天示例将如下所示(仅举一个这样的示例,请参见https://github.com/emrahayanoglu/Socket.io-
Redis-RealTime-Chat-
Example/blob/master/chatServer.js
):
io.sockets.on('connection', function (client) { //websocket connection
redis1.subscribe("chat");
redis1.on("message", function(channel, message) {
console.log(message);
client.send(message);
});
client.on('message', function(msg) {
redis2.publish("chat",msg.message);
});
client.on('disconnect', function() {
redis1.quit();
});
});
但是,这里的问题是,当client
“断开连接”时,redis1.on('message',FUNC(){})
侦听器仍然处于连接状态。控制台将继续打印出message
。如果要检查的事件列表redis1
,他们仍然会发现匿名函数正在侦听。
问题是没有redis1.off(...)
功能。因此,如何取消绑定/取消订阅/删除/删除Redis消息侦听器?
注意:一个人不能只做redis1.end(),因为这会中断其他websocket连接的用户的redis连接。
通过在节点REPL中玩耍找到的唯一解决方案是不使用该redis.on()
功能进行订阅。相反,应该使用redis.addListener()
和redis.removeListener()
函数。另外,一定不能将匿名函数用作事件回调。一个人可以做这样的事情:
var callback = function(channel, message){
};
redis1.addListener('message', callback);
client.on('disconnect', function(){
redis1.removeListener('message', callback);
})
我有一个Java程序,它向RabbitMQ发送消息。我只知道交易所的名字。没有队列、绑定等。 我的问题是:我如何才能看到程序是否成功发送这些,只知道交换名称? 谢谢 问候,塞班
我正在使用 发送和 对于现在从rappid mq接收消息,我希望使用类似以下内容的侦听器: 问题是onMessage监听器与Messages一起工作是否有可能在类似的函数中接收简单的可序列化对象?
我有两个屏幕..首先是闪屏,在这里我借助firebase.auth()检查用户是否已经存在。onAuthStateChanged侦听器。如果用户为空,它将转到另一个firebase.auth()的登录屏幕。onAuthStateChanged侦听器用于在电话验证后获取用户,如果用户之前未注册,则将用户移至UserDetails屏幕以获取更多用户信息,或者移至主屏幕..同样的检查也在闪屏上进行,以确
我有一个表,其中有多个表项可用。其中,对于某些表项,设置了背景和前景色。 在选择彩色项目时,由于文本颜色为白色,文本很难阅读,因此,我需要将前面的颜色更改为默认颜色,即黑色。我是用选择侦听器完成的 成功地改变了颜色。 但是现在我正在选择任何其他没有着色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即白色。我不知道如何使用。 有人能帮忙吗?
问题内容: 我有一个按钮,并添加了一些按钮: 我可以通过以下方式删除它们: 如果我想一次删除所有侦听器,或者没有函数引用()怎么办?有没有办法做到这一点,或者我必须一个一个地删除它们? 问题答案: 我认为最快的方法是克隆节点,这将删除所有事件侦听器: 请注意,因为这也会清除所涉及节点的所有子元素上的事件侦听器,因此,如果要保留该侦听器,则必须一次显式删除一个侦听器。
我正在SWT制作一个组件,它可以监听其他组件中的事件。但是,当该组件被释放时,它仍然注册为侦听器。我想知道当这个组件被释放时,如何自动删除这个监听器。 我的意思是: < code>myDialog同时侦听它自己的按钮和< code>anotherPage中的按钮。如果用户决定释放< code>myDialog(关闭对话框),但它仍然侦听< code>someButton,这是没有意义的。如何在处置