问题标签 [socket.io-redis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3508 浏览

socket.io - socket.io-redis 如何处理房间?

如果我有多个进程并且正在使用 socket.io-redis,那么当我这样做时,io.to(room).emit(namespace, message);这是否可以无缝且高效地处理?还是我误解了socket.io-redis的作用?

0 投票
0 回答
395 浏览

node.js - 带有 VVV 的 Socket.io - 客户端未收到消息

我正在使用 socket-io-redis 运行 VVV (Vagrant)。这似乎有效,消息正在发送到 Redis。

我测试SUBSCRIBE socket.io#/#它正在记录一堆消息以进行测试。

这是我在终端中看到的响应示例 -

1) "message" 2) "socket.io#/#" 3) "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa4time\xb82016-04-03T22:17:21.478Z\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x80"

节点 JS -

客户 -

当我运行 Node 应用程序时,我看到了消息Connection,在浏览器的控制台中我看到了消息Connected(然后是用于调试的套接字)。

我看不到任何明显错误的东西,客户端连接并且发射器似乎正在工作。但是客户从来没有收到任何发出的东西。

我错过了什么吗?由于运行 Vagrant,IP 不是本地主机。

任何建议表示赞赏。谢谢!

编辑

快速更新,我可以在不使用的情况下发出socket.io-emitter,但它不会通过 Redis。当我使用发射器时,它会正确地通过 Redis,如上所述。

即使端口是打开的,我的客户似乎也没有收到来自 Redis 的消息。

这是我尝试的 -

在我的浏览器中,我看到Nope但没有别的。然后我monitorRedis 并看到以下内容 -

"publish" "socket.io#/#" "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa8new_post\xa3Yep\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x90"

我的服务器在使用 Redis 时也看不到消息,我用 -

0 投票
0 回答
403 浏览

node.js - 房间和活动之间的 Socket IO 性能成本比较

在我的应用程序中,我将 redis 适配器用于 socket.io

我有一个场景,我必须为两个人之间的动态聊天创建聊天室

但我已经为他们的用户 ID 准备好了房间

现在,当我创建聊天室并将事件单独发布到该聊天室时,是否有性能优势?或者当我向 userId room 发布多个事件时?

哪一个更好。?

是否有任何性能基准工具可以为我们提供有关 cpu 负载和网络负载的详细信息

我知道http://drewww.github.io/socket.io-benchmarking/https://github.com/M6Web/websocket-bench但这些对 CPU 负载和内存负载没有帮助

请指导我

0 投票
1 回答
1275 浏览

javascript - 如何使用 node js 开发实时聊天

我想使用 node js 开发实时聊天。谁能指导我如何做到这一点?我决定的用例:

  1. 用户将在应用程序屏幕上看到标有“在线聊天支持”的链接或图标。
  2. 单击此按钮,将打开聊天窗口。它会指示在线并准备就绪的代理的名称,或者将指示代理正忙,并在代理可用时更改该状态。
  3. 在代理方面,在为更多用户生成忙碌消息之前,最多将打开 3 个窗口(来自 3 个用户)。这个数字 (3) 将是可配置的。
  4. 代理将获得用户正在 ping 他的屏幕的名称。
  5. 由于会有多个代理,我们需要将一堆屏幕(或应用程序)标记到特定代理的能力。
  6. 需要一种负载分配机制,新的查询将被路由到任何空闲的代理,并标记到该屏幕或应用程序。
  7. “我们需要在特定时间窗口设置不可用消息的能力——如果聊天支持仅在 IST 上午 9 点到下午 6 点之间可用,我们应该能够为在此窗口外登录的用户设置一条消息,上面写着‘在线聊天支持仅在……之间可用。””

请告知如何进行。

0 投票
1 回答
775 浏览

node.js - NodeJS Socket.io 服务器<-->服务器通信

我正在尝试使用socket.io在NodeJS(集群架构,单独的VM)中建立服务器到服务器的通信。我尝试使用这里发布的内容http://socket.io/docs/using-multiple-nodes/

所以我假设(可能是错误的)在做的时候io.emit("message", "some example message")我可以用:

当运行一台服务器(node_app)并在另一台服务器上发送事件时,我看到调试消息:

我想实现每个之间的通信node_app(用于缓存失效等):

在此处输入图像描述

0 投票
0 回答
141 浏览

node.js - 使用 socket.io-redis 模块监听套接字

使用socket.io-redis模块,我们可以轻松地emit/broadcast使用saved-socket-id.

另一方面,在没有任何额外/外部 redis sub/pub 客户端的情况下侦听套接字的最佳方式是什么。

当我初始化socket-io.redis模块时,我已经使用 return_buffers: true配置了一个订阅者,我认为模块在幕后解决了它,但我找不到任何示例。

有没有一种平滑的方法来做到这一点socket.io-redismodule ?或者每个集群套接字侦听器必须发布消息,我必须手动从其他集群订阅它们?

谢谢你。

0 投票
2 回答
2390 浏览

javascript - redis-server 离线崩溃节点

我在这里玩得很开心。我已经阅读了这么多文档,以及其他人关于同一主题的问题,但找不到关于如何阻止这种情况发生的答案。我特意关闭了 redis 服务器,以确保应用程序在生产过程中不会完全变成核,但我似乎没有做任何事情来阻止这种情况的发生。这是我现在的代码的一个非常简单的示例...

现在,我启动 redis-server,然后用这个服务器启动 node.js。然后我打开一个终端窗口并输入“redis-cli shutdown”来强制redis服务器下线。一旦我这样做,node.js 终端窗口就会疯狂地一遍又一遍地循环相同的错误。

我有两个 process.on('uncaughtException' ... 和 io.on('uncaughtException' ... 以及一个 io.on('error', ... 处理程序,但每次服务器只是坐在那里循环说有一个“未处理的'错误'事件”有人可以在这里帮助我吗。我不明白这怎么可能是未处理的错误,由于某种原因,这在我看来没有意义。提前谢谢你您可以提供的任何可能的帮助。我已经在互联网上花费了几个小时试图找到任何其他可能的选择,他们都说同样的话,使用 io.on('error', 或 io.on('uncaughtException', 或process.on('uncaughtException', 我拥有它们,但它仍然会出错并导致节点崩溃。

0 投票
1 回答
872 浏览

javascript - 在全局数组 + Node.js 中存储 socket.io 发射

有没有办法将 socket.io 的所有发射存储在一个全局数组中,以便我可以在新用户加入网站时循环发射,并可以拾取“画布绘图”当前所在的位置。我希望新用户查看已经完成的工作,然后进行协作。

我还有其他方法可以解决这个问题吗?

0 投票
0 回答
896 浏览

amazon-web-services - EC2 套接字连接

我尝试将 socket.io 与 EC2 和 laravel 一起使用。

这是我在服务器端的代码 - server.js

当我在 localhost 中测试时,一切都很好。我可以连接和发射。

当我node server.js在 localhost 时,结果将是这样的。

但是当我node server.js在 EC2 实例中时,结果会是这样的。似乎它无法连接socket.io。

我已经在 EC2 实例中安装了 redis、node、npm 和 express,并测试了它们正在运行。

我还像这样为端口 8890 设置了我的实例的安全组。

我错过了任何步骤吗?请帮忙。非常感谢。

0 投票
2 回答
5914 浏览

javascript - 在 laravel 5.2 中使用 socket.io 建立连接时 io.on 不工作

我在连接 io.on 功能时遇到问题(我真的很沮丧)。我正在使用 express、ioredis 和 socket.io。redis 工作正常,但 socket.io 不工作。它不工作。请帮助。

客户端