节点的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);
});
});
来自client1的数据与client2不同,但是当我记录它时,会记录来自client2的数据(有时并不总是)
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?
答案 0 :(得分:0)
我真的不明白这个问题。
但是在myFunction函数结束时,你没有显式调用回调,因此无法调用client.publish()。如果您运行此代码,我希望消息在控制台中显示,而不在Redis客户端上发布任何内容。