打赏

redis实现发布和订阅

redis实现发布和订阅

示例

publish.js

// 引入redis
let redis = require("redis");
// 创建连接
let client = redis.createClient(6379, "127.0.0.1");

client.on("ready", function () {
    //订阅消息
    client.subscribe("chatB");
});
// 失败处理
client.on("error", function (error) {
    console.log("Redis Error " + error);
});

//监听订阅成功事件
client.on("subscribe", function (channel, data) {
    console.log("client subscribed to " + channel + ",data:" + data);
});
//收到消息后执行回调,message是redis发布的消息
client.on("message", function (channel, message) {
    console.log("我接收到信息了" + message);
});
//监听取消订阅事件
client.on("unsubscribe", function (channel, count) {
    console.log("client unsubscribed from" + channel + ", " + count + " total subscriptions")
});


function zadd(channel, data) {
    client.publish("chatA", data);//client将member发布到chat这个频道
    //然后订阅这个频道的订阅者就会收到消息
}
for (let i = 0; i < 10; i++) {
    zadd("z", "" + i);//发布10次
}

readRedis.js

let redis = require("redis");  
let client = redis.createClient(6379, "127.0.0.1");  

//客户端连接redis成功后执行回调
client.on("ready", function () {
    //订阅消息
    client.subscribe("chatA");
});
// 失败处理
client.on("error", function (error) {
    console.log("Redis Error " + error);
});

//监听订阅成功事件
client.on("subscribe", function (channel, data) {
    console.log("client subscribed to " + channel + ",data:" + data);
});
//收到消息后执行回调,message是redis发布的消息
client.on("message", function (channel, message) {
    console.log("我接收到信息了" + message);
});
//监听取消订阅事件
client.on("unsubscribe", function (channel, count) {
    console.log("client unsubscribed from" + channel + ", " + count + " total subscriptions")
});

先执行readRedis.js,后执行publish.js,readRedis.js的控制台输出:

我接收到信息了0
我接收到信息了1
我接收到信息了2
我接收到信息了3
我接收到信息了4
我接收到信息了5
我接收到信息了6
我接收到信息了7
我接收到信息了8
我接收到信息了9

每个文件都可以监听和发布消息。

posted @ 2020-02-06 19:50  孟繁贵  阅读(517)  评论(0编辑  收藏  举报
TOP