zoukankan      html  css  js  c++  java
  • 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
    

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

  • 相关阅读:
    gulp模块编译
    微擎数据库表-T
    微信小程序自动识别姓名电话地址
    PHPBase64格式编码图片
    HTML中Data的数据类型
    EPP状态码
    WePay-T
    HTML-T
    PHPNamespace命名空间
    jQuery:jQuery简介
  • 原文地址:https://www.cnblogs.com/mengfangui/p/12270081.html
Copyright © 2011-2022 走看看