我使用socket.io-emitter通过for循环将事件广播到一组频道:
在文件中,我有:
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
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时,我在控制台中得到以下未捕获的错误:
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的。你们中有谁以前遇到过这个错误吗?你是怎么解决这个问题的?
谢谢。
发布于 2014-07-13 19:28:47
在nm.socket.io-redis的主页上是这样写的:
Msgpack给了我们一个叫做“尾部字节”的错误。在阅读之后,我们意识到我们可以只使用JSON.Strucfy/JSON.parse而不是msgpack。
这看起来就是你得到的错误。按照这里的建议,尝试使用JSON.strigfy
发布于 2014-07-18 01:37:01
好了,我们找到解决方案了。请参阅:https://github.com/Automattic/socket.io-redis/issues/17
如您所见,socket.io-emitter要求您在redis客户端上将return_buffers设置为true。
如果有效,请让我知道。否则,我可以在代码中进行更多的dif。
发布于 2014-07-21 22:44:13
https://stackoverflow.com/questions/24721777
复制相似问题