我们有一个基于Laravel构建的API,我们希望添加Redis和Node层以使其实时兼容,但是我有几个问题。
用户/客户需要订阅频道才能看到任何更新,对吗?
此方法的所有示例都显示通道被硬编码到节点脚本中,显然应用程序需要超过1个通道,我的头顶需要,
用户特定通知
我的理解是,如果用户订阅了一个名为“' project'管理项目更新,然后如果项目名称更改,那么所有项目将更改为该名称?也许我错了。
这里的任何方式都是我的节点脚本
var https = require('https'), // module for https
fs = require('fs'), // required to read certs and keys
express = require('express');
var options = {
key: fs.readFileSync('ssl/ssl.app.dev.key'),
cert: fs.readFileSync('ssl/ssl.app.dev.crt'),
requestCert: true,
rejectUnauthorized: false
};
var app = express();
var server = https.createServer(options, app);
const redis = require('redis');
const io = require('socket.io');
const client = redis.createClient();
server.listen(3000, 'localhost');
io.listen(server).on('connection', function(client) {
const redisClient = redis.createClient();
var channel;
//console.log(redisClient);
redisClient.subscribe('project_id_64');
redisClient.on("message", function(channel, message) {
//Channel is e.g 'score.update'
console.log("Channel: " + channel);
console.log("Message: " + message);
client.emit(channel, message);
});
client.on('disconnect', function() {
redisClient.quit();
});
});
正如你所看到我通过一个字符串订阅redis,有没有办法实现这一点,所以我可以通过可以改变的变量订阅redis?