socket.io-redis在redis 3.0.6中得到了尾随字节错误

我正在使用phpredis通过pubsub方法将数据发送到phpredis 将node.js升级到稳定版本4.2之后,我得到了来自socket.io-redis模块的trailing byte错误。

的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,但是错误仍然存​​在。

我已经按照这个线程中提出的解决scheme,但他们不工作。

1.添加return_buffers:true对实例不起作用。

重启时会引起这个警告:

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

2.在上一篇文章中build议将依赖关系改为msgpack-js-v5,但这不起作用,如下所示:

socket.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" }, 

这是从哪里冒出来的。 谁能告诉我如何解决它?

希望你redis是:

var redis = require('redis');

和RedisStore是:

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

还可以将主机端口添加到io.adapter中的RedisStore中,如:

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

它适合我…让我知道如果你有问题..