Articles of socket.io redis

使用redis以socket.io水平缩放express / node.js

我正在试图通过后端快速扩展。 问题是,每当用户进来或如果我重新启动服务器,它会得到一个新的socket.id。 另外我不能保存整个套接字到内存中,因为它给我一个[圆形JSON]的问题。 如何将套接字的某个部分保存到redis中,以便从其他服务器检索相同的套接字?

redis-server脱机崩溃节点

我在这里有一段时间。 我已经阅读了大量的文档和其他民族关于同一主题的问题,无法find如何阻止这种情况发生的答案。 我有意closuresredis服务器,以确保应用程序在生产中不会完全走向核心,但是我所做的任何事似乎都阻止了这种情况的发生。 这里是我的代码现在是一个非常简单的例子… var cluster = require('cluster'); var express = require('express'); var http = require('http'); var redis = require('redis'); var redisAdapter = require('socket.io-redis'); var sticky = require('sticky-session'); var port = process.env.PORT || 3333; var workers = 3; var app = express(); var server = http.createServer(app); var io = require('socket.io')(server); if(!sticky.listen(server, 3333, {workers: workers})) { […]

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 […]

套接字IO性能成本比较房间和事件

在我的应用程序中,我正在使用redis适配器socket.io 我有场景,我必须创builddynamic聊天两人之间的聊天室 但是我已经有了他们用户的房间 现在,当我创build聊天室并单独发布事件时,是否有性能优势? 或当我发布多个活动userId房间? 哪一个更好。? 有什么性能基准testing工具可以给我们关于CPU负载和networking负载的细节 我知道的http://drewww.github.io/socket.io-benchmarking/和https://github.com/M6Web/websocket-bench但这些没有帮助的CPU负载和内存的负载 请在这里指导我

如何使用socket.io-redis获取所有连接的套接字?

我有我的多个节点通过socket.io–redis运行,一切都工作正常,因为我从另一个事件发送到1服务器。 我想要在多个服务器上获得连接套接字的完整列表,因为我必须相应地操作它们的键,就像在简单的socket.io的io对象中一样,我得到一个包含所有套接字的hashmap。

用socket.io-redis和RedisToGo在Heroku上扩展到2+ dynos

我正在尝试使用socket.io-redis来将我的Heroku应用程序扩展到2个dynos(或更多)。 这里是我的代码(config.redis只是一个包含RedisToGo端口,主机和传递值的对象): var redisApp = require('redis'); var redis = require('socket.io-redis'); if(process.env.NODE_ENV === 'production') { var socketpub = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, return_buffers: true}); var socketsub = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, detect_buffers: true}); var client = redisApp.createClient(config.redis.port, config.redis.host, {auth_pass: config.redis.pass, return_buffers: true}); socketio.adapter(redis({ pubClient: socketpub, subClient: socketsub, redisClient: client })); } 在客户端我有: var ioSocket = io('', […]

Socket.IO – 如何将事件发送给房间中的每个人,包括发件人?

在我的Socket.Io / Node.Js / Express应用程序中 – 在添加聊天室之前,我曾经为每个人(包括发件人)发出这样的事件: io.emit('chat message', msg); 现在我添加了房间,并尝试使用相同的东西 socket.broadcast.to(socket.room).emit('chat message', msg); 要么 socket.to(socket.room).emit('chat message', msg); 但是两者都只将消息发送给接收者, 而不发送给发送者。 我该怎么做才能让这个消息也发送给在聊天室里的发件人呢? 谢谢!

用socket.io-redis模块监听一个socket

使用socket.io–redis模块,我们可以使用saved-socket-id轻松发送/广播消息。 io.to(socket-id-from-redis).emit('serverEvent',“some message”); 另一方面,在没有任何额外/外部的redis子/客户端的情况下监听套接字的最佳方式是什么。 当我初始化socket-io.redis模块时,我用return_buffers:trueconfiguration了一个订户,我认为模块在幕后解决了这个问题,但我找不到任何示例。 有socket.io-redis模块做到这一点的顺利方法吗? 或者每个集群套接字侦听器必须发布消息,我必须手动订阅其他集群? 谢谢。

用redis水平缩放socket.io

我目前正在创build一个水平可伸缩的socket.io服务器,如下所示: LoadBalancer (nginx) Proxy1 Proxy2 Proxy3 Proxy{N} BackEnd1 BackEnd2 BackEnd3 BackEnd4 BackEnd{N} 我的问题是,使用socket-io redis模块,如果它们都连接到同一个redis服务器,是否可以向其中一个后端服务器连接到某个代理服务器的特定套接字发送消息? 如果是这样,我该怎么做?

如何将客户端关联的数据存储在socket.io 1.0中

文档说socket.io现在不支持.get .set 是否可以存储客户端关联的数据 io.sockets.on('connection', function (client) { client.on('data', function (somedata) { client['data'] = somedata; }); }); 万一我需要多个节点?