首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.io-redis在redis 3.0.6中获取尾部字节错误

socket.io-redis在redis 3.0.6中获取尾部字节错误
EN

Stack Overflow用户
提问于 2016-01-08 19:31:15
回答 1查看 529关注 0票数 2

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

node.js

代码语言:javascript
复制
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}));

错误:

代码语言:javascript
复制
   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.添加return_buffers:实例为true不起作用。

重新启动时将导致以下警告:

代码语言:javascript
复制
[nodemon] restarting due to changes...
[nodemon] starting `node node.js`
listening on *:3000
[TypeError: input.split is not a function]

2.更改上一篇文章中建议的msgpack-js-v5的依赖项,但这不起作用,如下所示:

socket.io-redis/index.js

代码语言:javascript
复制
var msgpack = require('msgpack-js-v5');

socket.io-redis/package.json:

代码语言:javascript
复制
 "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"
 },

真是莫名其妙。有人能告诉我怎么修吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-22 15:15:58

希望你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 }));

对我来说很管用。如果你有什么问题,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34676062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档