【问题标题】:How do I subscribe using yii2 and redis?如何使用 yii2 和 redis 订阅?
【发布时间】:2017-01-24 02:12:51
【问题描述】:

我想使用 yii2 控制器中的方法来订阅频道,以便我可以作为订阅客户端接收实时更新。我正在使用 redis pub/sub。

public function actionSubscribe(){
        Yii::$app->redis->executeCommand('SUBSCRIBE',
        ['notification'], 
        function($redis, $channel, $message){
                print('I just did it!!!!!!');               
        });
        return true;
}

我也在使用 nodeJs,下面是我的服务器端 nodeJs 代码。 请问我做错了什么?

我从代码中提取了这个拒绝工作的部分。

        socket.on("message", function(channel, message) {
        console.log("New message: " + message + ". In channel: " + channel);
        socket.emit(channel, message);
    });

以下是完整代码

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(8890);

 io.on('connection', function (socket) {

    console.log("new client connected");

    var redisClient = redis.createClient();
    //RedisClient deliberately pegged because I want Yii2 php to do the 
    //subscription to the notification channel; not nodeJs.
    //redisClient.subscribe('notification');

    socket.on("message", function(channel, message) {
        console.log("New message: " + message + ". In channel: " + channel);
        socket.emit(channel, message);
    });

    socket.on('disconnect', function() {
       // redisClient.quit();
    });

}) ;

【问题讨论】:

  • 请注意,在我尝试通过锁定redisClient.subscribe('notification') 并引入yii2 actionSubscribe() 来订阅yii2 之前,整个代码都可以正常工作

标签: node.js redis yii2 publish-subscribe


【解决方案1】:

考虑到上面的代码,如果您将其创建为,我认为您应该在以下代码部分中使用redisClient

**redisClient**.on("message", function(channel, message) {
        console.log("New message: " + message + ". In channel: " + channel);
        socket.emit(channel, message);
    });

以便使用redisClientactionSubscribe() 用于接收消息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-27
    • 2011-07-05
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多