Düğümümü Redis'e şifresiz bir şekilde gönderebilirim, ancak bir parola eklediğimde hiçbir şey doğru değil. İşte Node.js ve socket.io ile Redis auth hatası
an example sağ alınmış şu anda benim kod verilmiştir:var redis = require('redis')
, sio = require('socket.io')
, RedisStore = sio.RedisStore
, io = sio.listen();
var port = 6379
, hostname = 'localhost'
, password = 'password';
var redisClient = redis.createClient(port, hostname);
redisClient.auth(password, function (err) { if (err) throw err; });
var redisSubscriber = redis.createClient(port, hostname);
redisSubscriber.auth(password, function (err) { if (err) throw err; });
io.set('store', new RedisStore({ redisPub: redisClient, redisSub: redisSubscriber, redisClient: redisClient }));
app çalışan, ben bu yığın izleme almak:
/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:506
throw callback_err;
^
Error: Ready check failed: ERR operation not permitted
at RedisClient.on_info_cmd (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:319:35)
at Command.RedisClient.ready_check.send_anyway [as callback] (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:367:14)
at RedisClient.return_error (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:502:25)
at RedisReplyParser.RedisClient.init_parser (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:262:14)
at RedisReplyParser.EventEmitter.emit (events.js:93:17)
at RedisReplyParser.send_error (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:266:14)
at RedisReplyParser.execute (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:125:22)
at RedisClient.on_data (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:478:27)
at Socket.<anonymous> (/home/eric/christmas/sockets/node_modules/socket.io/node_modules/redis/index.js:79:14)
at Socket.EventEmitter.emit (events.js:93:17)
bu son biridir üreten çizgi - eğer RedisStore'u ayarlama girişimini açıklarım, herhangi bir hata almıyorum.
Parola doğruysa eminim (redis-cli dosyasında doğrulayabilirim ve eğer parola yanlış olursa değiştirirseniz, auth geri çağrılarının tetiklenmediğini doğrulayabilirim). Bu kod ayrıca şifreyi kaldırır ve iki hat satırını yorumlarsam çalışır.
Blog gönderilerindeki, çalışanların ve benzerlerinin tüm çalışma örnekleri bunun işe yarayacağını ve neden benimkinin olmadığını bilmiyorum. Yığının hangi kısmının bakılacağını bilmiyorum.
1353227107.912512 [0 127.0.0.1:56759] "auth" "password"
1353227107.912719 [0 127.0.0.1:56758] "auth" "password"
1353227107.913470 [0 127.0.0.1:56759] "info"
1353227107.913639 [0 127.0.0.1:56758] "info"
Ve burada Redis-cli monitör üzerinde yetkilendirme satırları, ben şifreyi kapatırsanız gösterir bu, ve: İşte
Redis-cli monitör yukarıdaki kodu çalıştırdığınızda gibi görünür uygulamayı başarıyla çalıştırın:1353227252.401667 [0 127.0.0.1:56771] "info"
1353227252.402020 [0 127.0.0.1:56770] "info"
1353227252.402131 [0 127.0.0.1:56769] "info"
1353227252.402423 [0 127.0.0.1:56768] "info"
1353227252.402611 [0 127.0.0.1:56767] "info"
1353227252.406254 [0 127.0.0.1:56770] "subscribe" "handshake"
1353227252.406287 [0 127.0.0.1:56770] "subscribe" "connect"
1353227252.406314 [0 127.0.0.1:56770] "subscribe" "open"
1353227252.406321 [0 127.0.0.1:56770] "subscribe" "join"
1353227252.406326 [0 127.0.0.1:56770] "subscribe" "leave"
1353227252.406337 [0 127.0.0.1:56770] "subscribe" "close"
1353227252.406354 [0 127.0.0.1:56770] "subscribe" "dispatch"
1353227252.406372 [0 127.0.0.1:56770] "subscribe" "disconnect"
başarılı (şifresiz) bağlantısı 5 "info" komutları yapar, ve benim başarısız (passworded) komutu 2 yapar - ve daha sonra bir "on_info_cmd" yöntemi çağrısı üzerine ölür.
Bunu bilen var mı? Verebileceğiniz herhangi bir yardım için teşekkürler.
Bunu (aşağıdaki yanıt) çözdüm ve RedisStore'un bir örneğini yetkilendirmek için Socket.io wiki dosyasını güncelledim: https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO – Konklone