草庐IT

socket_handle

全部标签

javascript - 使用 Redis 扩展 Socket.IO,然后扩展 Redis 本身

在使用Node.js和socket.io一段时间后,我明白如果我想让我的应用程序支持多达100万个并发用户,我需要扩展它,所以我开始使用Redis来PUB/SUB套接字之间的消息和运行大量socket.io服务器实例,在同一台机器和其他机器上,但我所有的socket.io服务器都使用相同的Redis服务器。这让我思考:有什么意义?我是否需要更多的Redis服务器并在它们之间进行扩展?我的观点是,它们将始终是顶级服务器的瓶颈。我的问题是,是否可以扩展Redis?如果是,我连接到不同socket.io服务器的所有套接字如何能够在Redis服务器之间进行PUB/SUB?

node.js - 负载平衡 : Node. js - Socket.io - Redis

我有3个运行NodeJ的服务器,它们与Redis相互关联(1个主服务器,2个从服务器)。我遇到的问题是,在单个服务器上运行系统工作正常,但是当我将它扩展到3个NodeJS服务器时,它开始丢失消息并且系统变得不稳定。我的负载均衡器不接受粘性session。因此每次来自客户端的请求到达它时,它们都可以转到不同的服务器。我将所有NodeJS服务器指向RedisMaster。看起来socket.io正在每个服务器上存储信息,而不是使用redis进行分发。我正在使用socket.ioV9,我怀疑我没有任何握手代码,这可能是原因吗?我配置socket.io的代码是:varexpress=requi

node.js - 如何使用 laravel 5.4 中的 LRedis 和 nodejs 中的 socket.io 向同一 channel 中的特定用户发送 apns 通知或消息?

我在客户端使用socket.io在Laravel5.4中创建聊天应用程序,同时向目标用户发送APNS通知。当用户向目标用户发送消息时执行此操作时,消息发送不止一次意味着它取决于与Nodesocket.io服务器连接的连接数,我认为这意味着我的channel(“消息”)循环该消息连接的客户端数量,因此它在接收端显示不止一次。这是我的发件人端(Laravel):$redis=LRedis::connection();$data=['message'=>$msg,'user'=>$auth,'music'=>$music,'target_user'=>$target_user];$redis

node.js + socket.io + redis 架构 - 水平服务器缩放套接字连接?

我是第一次使用node.js,希望得到建议:我在我的服务器上安装了以下程序:node.jsv0.11.3-preexpressv3.3.4socket.iov0.9.14connect-redisv1.4.5Redis服务器v=2.6.14redis-cli2.6.14首先,我创建了一个express应用:expresstestApplication在创建的“package.json”中,我定义了所有必要的依赖项。从一开始我就在名为“cluster.js”的文件中定义了一个用于垂直扩展(多进程)的集群:varcluster=require('cluster');if(cluster.i

node.js - Socket.io 分布在不同的服务器上

我想在3台不同的机器上设置socket.io服务器。我有一个负载均衡器设置用于在不同的服务器之间分配请求,但是我如何将我在socket.io的连接函数中获得的套接字对象分配到不同的服务器?我知道我们可以使用RedisStorepub/sub来发布和记录redis事件,但是假设我有一个连接到机器1的客户端A,如果我有一个连接到机器3的客户端B。客户端A将如何发送给客户B的消息?或者我可以使用socket.io中的其他架构来实现这一目标? 最佳答案 如评论中所述,套接字是两台不同机器(在本例中为客户端和服务器)之间的连接,因此无法共享。

node.js - Redis、Node.js 和 Socket.io 问题

刚开始学习redis和node.js,有两个问题找不到满意的答案。我的第一个问题是关于在node.js中重用redis客户端。我找到了这个问题和答案:Howtoreuseredisconnectioninsocket.io?,但它并没有让我足够满意。现在,如果我在连接事件中创建redis客户端,它将为每个连接生成。所以,如果我有2万个并发用户,就会有2万个redis客户端。如果我把它放在连接事件之外,它只会产生一次。答案是他在连接事件之外为每个函数创建了三个客户端。但是,根据我对MySQL的了解,当编写一个生成子进程并并行运行的应用程序时,您需要在创建子实例的函数中创建MySQL客户端

node.js - 在 Heroku 上使用集群和 socket.io-redis 扩展 node.js socket.io@1.*.*

有没有人知道在多个内核上扩展基于node.js-socket.io的应用程序的好解决方案?我目前正在测试socket.io文档中提供的解决方案,以在多个Node上使用socket.io,但没有取得具体的成功。我在github上为此创建了一个Playground:https://github.com/liviuignat/socket.io-clusters这是来自socket.io站点的聊天应用程序的稍微修改的副本。它使用express,cluster,socket.io@1.1.0和socket.io-redis.目前还有一个使用sticky-session的实现在分行feature

node.js - 使用 node.js、socket.io 和 redis 的一对一聊天应用程序

我目前在node.js和socket.io中有一个聊天应用程序(一对一)。随着我网站上的用户越来越多,我想在我的聊天应用程序中引入redis。这是我当前应用程序的一个小示例://allrequiresandconnectionsio.sockets.on('connection',function(socket){socket.on('message',function(msg){//codetogetreceiverssocketio.sockets.sockets[receiverssocket].emit('message',{"source":msg.sendersuserna

node.js - 带有 socket.io 和 expressjs 的 Node 集群

这是我的服务器代码:我正在尝试将集群与socket.io和expressjs一起使用。我正在我的四核台式机上对此进行测试。varcluster=require('cluster')varnumCPUs=require('os').cpus().lengthif(cluster.isMaster){//Forkworkers.for(vari=0;i有什么明显的错误吗?日志表明一切都发生了4次。这似乎是正确的。但是我的socket.io的channel用户还表示,每当我连接到一个页面时,我都会连接4次(创建4个用户套接字)。这似乎是错误的。我该如何修复它以及我的代码是否还有其他问题。谢谢

node.js - 没有使用这个基本的 socket.io + redis 设置接收事件?

我有一个使用socket.io-redis的简单socket.io服务器,一个socket.io-emitter,我运行了redis(这对我来说是全新的,我在Windows上,我下载了redis并打开redis-server.exe和redis-cli.exe)。通过带有命令monitor的redisCLI,我看到服务器已连接并且事件从发射器到达redis,但是test-server.js从未记录任何内容。我还需要做什么?socket.io服务器是否需要订阅redis?Redis输出"publish""socket.io#/#""\x93\xa7emitter\x83\xa4type\