Laravel,Redis,Node.js和Websockets(pubsub?)

时间:2015-03-25 10:25:45

标签: node.js laravel redis publish-subscribe

我们有一个基于Laravel构建的API,我们希望添加Redis和Node层以使其实时兼容,但是我有几个问题。

  1. 用户/客户需要订阅频道才能看到任何更新,对吗?

  2. 此方法的所有示例都显示通道被硬编码到节点脚本中,显然应用程序需要超过1个通道,我的头顶需要,

  3. 用户特定通知

  4. 项目
  5. 项目用户
  6. 我的理解是,如果用户订阅了一个名为“' 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?

0 个答案:

没有答案