【问题标题】:node redis, variables are shared between clients?节点redis,变量在客户端之间共享?
【发布时间】:2016-03-01 11:47:43
【问题描述】:

node 的 redis 的异步特性让我快要死了。

我看到消息处理从一个客户端切换到另一个客户端时, 我认为是独立的变量看起来会被其他客户覆盖。

我不知道为什么两个客户端之间共享变量。

var subscriber = redis.createClient(port, host);
var client = redis.createClient(port, host);
var requirejs = require('requirejs');


requirejs(['my-function'], function(myFunction) {

    subscriber.subscribe('CHANNEL');

    subscriber.on('message', function(channel, message) {
        // If I do multiple jobs, say multiple db inserts
        var data = JSON.parse(message);

        var callback = function(result) {
            client.publish(result);
        };

        myFunction(data, callback);

    });
});

来自客户端 1 的数据与客户端 2 不同,但是当我记录它时,来自客户端 2 的数据会被记录(有时并非总是如此)

define([
    'module',
    'text!my-script.js',
    'script-fn',
], function(module, myScript, scriptFn) {

    var myFunction = function(data, callback) {
        // I pass data to functions taht use vm.createScript, and requirejs
        // there I print data
        console.log(data); 
    });
});

我使用 requirejs/vm ,这很复杂我在这里链接我以前的问题

node.js redis server, what happens when there are multiple messages to the subscribed channel?

【问题讨论】:

    标签: node.js redis requirejs


    【解决方案1】:

    我不太明白这个问题。

    但是在 myFunction 函数结束时,您没有显式调用回调,因此无法调用 client.publish()。如果您运行此代码,我希望消息会显示在控制台中,而不会在 Redis 客户端上发布任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      相关资源
      最近更新 更多