2016-01-08 4 views
2

Я использую phpredis для отправки данных на node.js через метод pubsub. После обновления node.js до стабильной версии 4.2 я получаю сообщение trailing byte с socket.io-redis.socket.io-redis get trailing bytes error in redis 3.0.6

node.js

var pub = redis.createClient(2222, '127.0.0.1',{no_ready_check: true}) 

pub.auth(redisPassword); 

var allsub = redis.createClient(2222, '127.0.0.1',{return_buffers: true,no_ready_check: true}) 

allsub.auth(redisPassword); 

allsub.subscribe('somekey'); 

io.adapter(RedisStore({pubClient:pub,subClient:allsub})); 

Ошибка:

Error: 256 trailing bytes 
     at Object.decode (/usr/apps/js/node_modules/msgpack-js/msgpack.js:200:47) 
     at Redis.onmessage (/usr/apps/js/node_modules/socket.io-redis/index.js:93:24) 
     at emitTwo (events.js:92:20) 
     at RedisClient.emit (events.js:172:7) 
     at RedisClient.return_reply (/usr/apps/js/node_modules/redis/index.js:697:22) 
     at ReplyParser.<anonymous> (/usr/apps/js/node_modules/redis/index.js:324:14) 
     at emitOne (events.js:77:13) 
     at ReplyParser.emit (events.js:169:7) 
     at ReplyParser.send_reply (/usr/apps/js/node_modules/redis/lib/parser/javascript.js:302:10) 
     at ReplyParser.execute (/usr/apps/js/node_modules/redis/lib/parser/javascript.js:213:22) 
     at RedisClient.on_data (/usr/apps/js/node_modules/redis/index.js:550:27) 
     at Socket.<anonymous> (/usr/apps/js/node_modules/redis/index.js:105:14) 
     at emitOne (events.js:77:13) 
     at Socket.emit (events.js:169:7) 
     at readableAddChunk (_stream_readable.js:146:16) 
     at Socket.Readable.push (_stream_readable.js:110:10) 
     at TCP.onread (net.js:523:20) 

Для того, чтобы выяснить проблему, я понизили socket.io до 1,36, но ошибка по-прежнему сохраняется.

Я пошел по предложенным решениям в this thread, но они не работают.

1.Adding return_buffers: true для экземпляров не работает.

Это может вызвать это предупреждение при рестарте:

[nodemon] restarting due to changes... 
[nodemon] starting `node node.js` 
listening on *:3000 
[TypeError: input.split is not a function] 

2.Changing зависимостей для msgpack-JS-v5 предложил в последнем посте, но это не работает, как это:

гнезда .io-Redis/index.js

var msgpack = require('msgpack-js-v5'); 

socket.io-Redis/package.json:

"dependencies": { 
"async": "0.9.0", 
"debug": "2.2.0", 
"msgpack-js-v5": "*", 
"redis": "2.4.2", 
"socket.io-adapter": "github:automattic/socket.io-adapter#de5cba", 
"uid2": "0.0.3" 
}, 

Это просто из ниоткуда. Может ли кто-нибудь сказать мне, как это исправить?

+3

такая же ошибка и нет решения :( – Terion

ответ

0

Надеется, что вы Redis является:

var redis = require('redis');

и RedisStore является:

var RedisStore= require(socket.io-redis);

также добавить хост-порт к вашему RedisStore в io.adapter как:

io.adapter(RedisStore({ pubClient: pub, subClient: allsub, host: '127.0.0.1', port: 222 }));

Это работает для меня ... Дайте мне знать, если у вас есть проблемы.