草庐IT

WSA_IO_PENDING

全部标签

node.js - Socket.io 发出的信号并不总是在 Node.js + Redis + Heroku(多测功机)环境中收到

环境上下文我们在Heroku上运行Node.jsv0.10.25应用程序和Socket.iov0.9.16。我们正在使用redisv2.6,更具体地说是Heroku附加组件“redistogo”,作为套接字存储。我们目前有两个测功机在运行。问题问题是通过xhr-polling的套接字连接被发送到一个套接字,但并不总是在同一个套接字上接收到。一个例子:我们发出心跳服务器端。我们并不总能收到客户端的响应。服务器端代码varapp=require('express')(),server=require('http').createServer(app),io=require('socket.

node.js - Socket.IO RedisStore 和 xhr 轮询

我在heroku上扩展我的Node.js应用程序时遇到问题。我正在使用RedisStore来保持Node进程之间的套接字连接持久。我正在扩展到2、3个进程。我在这里遵循了这段代码https://gist.github.com/1391583.在一个进程上一切正常,但是当我向外扩展时,广播不会到达其他Node。然而,连接信息是持久的,我不会经常收到握手错误和断开连接。我的理解是socket.ioRedisStore还在内部处理redisPub/Sub以保持多个进程同步。如此处所述https://groups.google.com/forum/?fromgroups&hl=en#!topi

node.js - 在带有 Node.js 的 Heroku 上使用 Socket.io 和 Redis

我正在尝试使用Node.js和带有Redis的Socket.io将应用程序部署到Heroku。我已将Socket.io设置为使用XHR长轮询作为specifiedbyHeroku,如果我只有一个测功机,它就可以完美地工作,但是当我将它缩放为使用多个测功机时,它就不起作用了。最初我在Socket.io中使用MemoryStore,当我使用“herokups:scaleweb=2”扩展它时,它开始间歇性地工作,并在客户端中出现此错误:UncaughtTypeError:Property'open'ofobject#isnotafunction我在Socket.iodocumentation

node.js - 如何在 restify 上扩展 socket.io?

我正在尝试扩展在restify上运行的socket.io。我能够将其设置为在一个nodejs实例上运行良好。现在,当我将我的应用程序扩展到四个实例时,应用程序生态系统崩溃了(即事件在客户端之间没有正确同步)。我正在寻找有关如何使用restify设置粘性session的示例。或者,现在是如何完成的?stickysession的更新是一年前的:Socket1.0Update/Scalability.我找到了这两个关于设置的博客,但它们都使用Express,而且也是一年多前写的:Article1Article2因为我正在制作headlessAPI,所以我认为不应该使用Express。这是推荐

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客户端