gpt4 book ai didi

node.js - 使用自定义消息的 Node-Redis psubscribe

转载 作者:IT王子 更新时间:2023-10-29 06:04:34 26 4
gpt4 key购买 nike

我的印象是使用这个库:

https://github.com/mranney/node_redis

可以做这样的事情:

var redis = require('redis');

var pub = redis.createClient();
var sub = redis.createClient();

sub.psubscribe('channel');

sub.on('message from channel', function(){});

pub.publish('channel','a message xyz');

问题是我似乎无法让 sub.on() 接收特定的自定义消息。似乎被解雇的唯一入口点是 sub.on('message')sub.on('pmessage'),但我怎样才能得到 sub.on('my custom message') 被调用?希望这是有道理的。

最佳答案

这就是 Node redis 客户端的工作方式。它保留 messagepmessage 发出事件,分别通知您 SUBSCRIBEPSUBSCRIBE 事件。

https://github.com/mranney/node_redis#publish--subscribe

但是,如果您想要一种类似于代码中的语法,您始终可以定义自己的消息格式和 EventEmitter,可能是这样的:

var events = require('events');
var redis = require('redis');
var pub = redis.createClient();
var sub = redis.createClient();

var ee = new events.EventEmitter();

ee.on('aweomseEvent', function() {
console.log('party!');
});

sub.on('subscribe', function() {
var message = {
type: 'aweomseEvent',
isAwesome: true
};
pub.publish('mychannel', JSON.stringify(message));
});

sub.subscribe('mychannel');
sub.on('message', function(channel, message) {
var deserialized = JSON.parse(message);
if (deserialized.type) {
ee.emit(deserialized.type, deserialized);
}
});

关于node.js - 使用自定义消息的 Node-Redis psubscribe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com