问题标签 [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 回答
1578 浏览

redis - 我需要关闭我的 Redis 连接吗?

使用ioredis。我没有使用,redis.disconnect()但最近我得到了一个:Ready check failed: ERR max number of clients reached错误。

这和我不关门有关系吗?

0 投票
1 回答
72 浏览

javascript - Node.JS 应该绑定到哪个端口?

我已经使用 Socket.io 和 Node.JS 实现了实时聊天

一切都很完美,除了它在我的电脑上不起作用。我将问题缩小到我的路由器默认阻止出站端口(9239)的事实

问题是,我无法诊断出我的网页防火墙问题的随机用户。所以我需要知道我应该将 node.js 绑定到哪个端口,以便每个人都可以使用它。

我可以创建自己的 url 并将其绑定到 80 或 443,但我读过这可能是不好的做法?

0 投票
2 回答
4800 浏览

node.js - 使用 redis 水平扩展 socket.io

我目前正在创建一个水平可扩展的 socket.io 服务器,如下所示:

我的问题是,使用 socket-io redis 模块,如果它们都连接到同一个 redis 服务器,我可以从后端服务器之一向连接到其中一个代理服务器的特定套接字发送消息吗?如果是这样,我该怎么做?

0 投票
2 回答
1702 浏览

node.js - 如何在多台服务器上使用 socket.io-redis?

我在两台机器上有以下代码

我将连接到这两台机器的每个客户端的 socket.id 存储在中央数据库上,正在保存套接字的 ID,并且在同一台服务器上发送事件可以完美地工作,但是当我尝试将消息发送到其他服务器的套接字时它不会工作..

  1. 我怎么知道redis工作得很好。
  2. 如何将消息发送到连接在另一台服务器上的套接字。
0 投票
1 回答
537 浏览

javascript - socket.io-redis 在 redis 3.0.6 中出现尾随字节错误

我正在使用通过方法phpredis将数据发送到。将 node.js 升级到稳定版 4.2 后,我从模块中收到错误消息。node.jspubsubtrailing bytesocket.io-redis

节点.js

错误:

为了找出问题,我已经降级socket.io到1.36,但错误仍然存​​在。

我已遵循此线程中建议的解决方案,但它们不起作用。

1.向实例添加return_buffers:true不起作用。

重启时会出现这个警告:

2.将依赖项更改为上一篇文章中建议的 msgpack-js-v5 但这不起作用,如下所示:

socket.io-redis/index.js

socket.io-redis/package.json:

简直太离谱了。谁能告诉我如何解决它?

0 投票
1 回答
1399 浏览

node.js - 多节点多人游戏服务器

假设您正在制作反恐精英服务器。我们有一个大厅和多个用于进行游戏会话的房间。

IE 我有 3 个节点服务器,nginx 负载均衡器,redis。

架构

我正在使用带有 redis 适配器的 socket.io,所以我可以向任何服务器上的每个客户端发送消息。

我无法理解一件事。例如我有这样的事情:

例如,我刚刚编写了这段代码。

让,user_1 在节点 1 上,用户 2 在节点 2 上。

如果 user_1 创建游戏,实例将被创建并保存在 node-1 上。

因此,当 user_2 收到有关已创建游戏的信息并单击加入按钮时,客户端将向服务器发送请求,并且在 node-2 上不会有 user_1 创建的游戏实例。

我希望你能明白我在说什么(我的英语不好)。

我猜,currentGames游戏实例的对象必须是全局的,对于所有节点。但我不知道怎么做。

我应该使用 redis 或 mongo 或其他东西来存储游戏信息,而不是variable

我走错路了吗?

0 投票
4 回答
1196 浏览

node.js - Node JS Socket.IO Emitter(和 redis)

我将给出我正在尝试做的事情的一个小前提。我有一个游戏概念,它需要多个玩家围坐在一张桌子旁,有点像扑克。

不同玩家之间的正常交互通过socket.io结合node js很容易处理。

我很难弄清楚的是;我有一个 cron 作业,它在另一个进程中运行,它每分钟获取新信息,然后需要将这些信息发送给每个玩家。由于这是一个不同的过程,我不确定我如何向某些客户发送这些信息。

socket.io 确实有这方面的信息,我在下面引用它:

在某些情况下,您可能希望从 Socket.IO 进程的上下文之外向 Socket.IO 命名空间/房间中的套接字发出事件。有几种方法可以解决这个问题,比如实现你自己的通道来将消息发送到进程中。为了方便这个用例,我们创建了两个模块:socket.io-redis socket.io-emitter

据我了解,我需要这两个模块来完成我之前提到的事情。然而,我不明白的是,当我只需要发送一些消息时,为什么等式中有 redis。

它是用来临时存储消息的吗?

任何帮助将不胜感激。

0 投票
1 回答
1642 浏览

sockets - 如何收听socket.io的内部乒乓

我将此解决方案设置为收听内部乒乓球。Socket.io 的内部库,即engine.io 在向客户端发送pong 事件后触发'heartbeat' 事件。您可以使用以下 hack 收听此事件。

我试图在新文件中覆盖 socket.io 但它不起作用。目前以下代码对我有用。

0 投票
1 回答
132 浏览

node.js - 多个nodejs服务器与socket.io-redis相互通信未收到事件

我设法使用 socket.io-redis 将两个 nodejs 服务器连接到 Redis。使用“redis-cli monitor”,我可以看到在 Redis 上接收到的事件,但它会一直持续下去。这就像我错过了什么。

这两个服务器的样子(数字 1 和 2 颠倒了)

这是我在使用按钮触发事件操作时在 Redis 监视器上看到的内容。

他们也都订阅了正确的频道:

我是不是错过了什么。从redis获取/接收事件还有其他事情要做吗?

0 投票
2 回答
169 浏览

javascript - 无法访问 JSON 中的特定字段,在 javascript 中说未定义

我在 Laravel + socket.io 有一个项目,我需要访问正在广播的 json 中的特定字段。这是代码。

socket.js

在我的客户端套接字中,我有这个。

那么这将成功,提醒这一点。

然后当我尝试这个

或者

我得到'未定义'..

我怎样才能访问task_id?谢谢!!!!