【发布时间】: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