socket.io-redis在redis 3.0.6中获取尾随字节错误
socket.io-redis getting trailing bytes error in redis 3.0.6
我使用phpredis
通过pubsub
方法向node.js
发送数据。在将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,但错误仍然存在。
我遵循了这个线程中建议的解决方案,但它们不起作用。
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.在上一篇文章中建议将依赖项更改为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 }));
它对我有用…如果你有问题,请告诉我。。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- Yodlee获取Captcha的MFAR响应字节数组
- JavaScript-从HTML img src中获取以字节为单位的大小
- 如何从 atob 创建二进制 blob - 当前获取不同的字节
- NodeJs 获取变量的大小(以字节为单位)
- socket.io-redis在redis 3.0.6中获取尾随字节错误
- JavaScript-从url到字节数组获取文件
- 如何在node.js中获取Rx/Tx字节(/packets)等网络静态信息
- 获取JavaScript字节码
- Node js从web获取图像并将其转换为字节值数组
- 获取javascript中值的字节大小
- 用Javascript获取一个字节的值
- 如何从servlet获取字节数组数据到pdf.js
- 从服务器获取文件并将其转换为javascript中的字节数组
- Mongodb从ObjectId获取3字节的计数器
- 获取客户端的文件大小(以字节为单位)
- 如何使用javascript从输入类型文件中获取字节数组
- 在上传之前获取图像大小(以字节为单位)
- 在.net中获取字符串的字节数组,并在Javascript中转换回来