首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.io-redis尾部字节

socket.io-redis尾部字节
EN

Stack Overflow用户
提问于 2014-07-13 18:39:02
回答 4查看 2.4K关注 0票数 2

我使用socket.io-emitter通过for循环将事件广播到一组频道:

在文件中,我有:

代码语言:javascript
复制
var io = require('socket.io-emitter')({
  host: 'localhost',
  port: 6379
});

module.exports = {
  exampleFunction: function(req, res, next) {
    var channels = req.param('channels'),
        data = req.param('data');

    for (var i=0; i<channels.length; i++) {
      io.to(channels[i]).emit('example event', data)
    }
  }
}

app.js中,我有socket.io-redis

代码语言:javascript
复制
io.adapter(socketio_redis({ 
  host: 'localhost', 
  port: 6379,
  pubClient: redis.createClient(6379, '127.0.0.1'),
  subClient: redis.createClient(6379, '127.0.0.1')
}))

当我尝试运行exampleFunction时,我在控制台中得到以下未捕获的错误:

代码语言:javascript
复制
Error: 348 trailing bytes
    at Object.decode (C:\Users\Website\socket.io-redis\node_modules\msgpack-js\msgpack.js:200:47)
    at Redis.onmessage (C:\Users\Website\socket.io-redis\index.js:93:24)
    at RedisClient.EventEmitter.emit (events.js:106:17)
    at RedisClient.return_reply (C:\Users\Website\node_modules\redis\index.js:672:22)
    at ReplyParser.<anonymous> (C:\Users\Website\node_modules\redis\index.js:309:14)
    at ReplyParser.EventEmitter.emit (events.js:95:17)
    at ReplyParser.send_reply (C:\Users\Website\node_modules\redis\lib\parser\javascript.js:300:10)
    at ReplyParser.execute (C:\Users\Website\node_modules\redis\lib\parser\javascript.js:211:22)
    at RedisClient.on_data (C:\Users\Website\node_modules\redis\index.js:534:27)
    at Socket.<anonymous> (C:\Website\node_modules\redis\index.js:91:14)

我看到这是来自msgpack的。你们中有谁以前遇到过这个错误吗?你是怎么解决这个问题的?

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2014-07-13 19:28:47

nm.socket.io-redis的主页上是这样写的:

Msgpack给了我们一个叫做“尾部字节”的错误。在阅读之后,我们意识到我们可以只使用JSON.Strucfy/JSON.parse而不是msgpack。

这看起来就是你得到的错误。按照这里的建议,尝试使用JSON.strigfy

票数 0
EN

Stack Overflow用户

发布于 2014-07-18 01:37:01

好了,我们找到解决方案了。请参阅:https://github.com/Automattic/socket.io-redis/issues/17

如您所见,socket.io-emitter要求您在redis客户端上将return_buffers设置为true。

如果有效,请让我知道。否则,我可以在代码中进行更多的dif。

票数 0
EN

Stack Overflow用户

发布于 2014-07-21 22:44:13

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

https://stackoverflow.com/questions/24721777

复制
相关文章

相似问题

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