gpt4 book ai didi

node.js - 我如何使用 yii2 和 redis 进行订阅?

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

我想在 yii2 Controller 中使用一个方法来订阅 channel ,这样我就可以作为订阅的客户端接收实时更新。我正在使用 Redis 发布/订阅。

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
**redisClient**.on("message", function(channel, message) {
console.log("New message: " + message + ". In channel: " + channel);
socket.emit(channel, message);
});

这样actionSubscribe()使用redisClient来接收消息

关于node.js - 我如何使用 yii2 和 redis 进行订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39521483/

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