草庐IT

node.js - Socket.IO "Host"断开连接时断开所有房间用户

目前我有一个房间的发起者被标记为“主人”。我需要对其进行设置,以便如果“主持人”点击“关闭房间”链接,它将断开所有用户与该房间ID的连接。我如何从socket.manager.roomClients或类似的东西中获取所有用户,遍历所有用户并运行某种类型的socket.leave(room_id)如果“主人”的room_id与套接字管理器中的键匹配?感谢任何见解或帮助。如果我需要澄清任何事情,请告诉我。 最佳答案 在socket.io中似乎没有这方面的机制,但自己实现它并不难。您只需遍历房间中的每个socket并调用disconnec

node.js - 找不到模块 'socket.io/node_modules/redis'

尝试做的时候varredis=require('socket.io/node_modules/redis');我收到错误“找不到模块‘socket.io/node_modules/redis’”,我不知道为什么。我正在运行Windows并运行“npminstallsocket.io”这里似乎是同一个问题:Error:Cannotfindmodule'socket.io/node_modules/redis'但redis服务器已启动并正在运行。在我的“socket.io/node_modules”文件夹中,我没有看到任何与Redis相关的内容。 最佳答案

javascript - node.js + socket.io + 结果需要多个数据库调用

我需要帮助。一天以来,我一直在尝试使用node.js和socket.io进行异步编程。我知道我需要一些流量控制,但我似乎不明白如何正确实现它。我有一个redis数据存储,其中的模块存储在一个集合中,比如'moda','modb'这些模块的实例是“moda:instances”,在“modb:instances”中,这些实例的属性作为散列存储在“moda:instancea”和“modb:instanceb”中。我正在尝试获取以下json:"moda":{"instancea":{"property1":"value1","property2","value2"}},"modb":{"i

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