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

php - Laravel Echo 不会使用 socket.io 捕获事件

我使用 Redis 和 Socket.io 来设置实时更新,但 Laravel Echo 没有捕获事件。

如果我使用 io() 的实例,它就可以正常工作。这是我在我的 vue 应用程序中监听事件的代码:

不会捕捉事件

会捕捉事件

我的节点 js 代码来推送事件。

我的 Laravel 事件广播

我尝试更改事件传递给 Laravel Echo 的方式,因为默认情况下它会接收它们,users:App\Events\UserCreated但我没有运气。

0 投票
1 回答
91 浏览

javascript - 未处理的拒绝错误:整数不安全

有时我在通过 socket.io 2.0 发送 JSON 数据时收到错误“未处理的拒绝错误:整数不安全”。这是发送导致此类错误的推文对象的示例。

示例代码: https ://gist.github.com/whoisstan/dcba1471094b984514c436fd395364e2

我在节点 6.11.2 上使用这些包:

  • "redis": "^2.8.0",
  • "socket.io": "~2.0",
  • “socket.io-redis”:“^5.1.0”

JSON 有效负载是否太大?如果是,如何约束有效载荷?

0 投票
0 回答
471 浏览

node.js - 在socket.io中,socket.disconnect()为单个socket,断开所有socket连接

我有一个浏览器,它使用 socket.io 连接到服务器,传输仅作为 websocket。

我使用简单的逻辑验证所有连接到我的服务器的套接字并且工作正常。

更新 1

现在问题出现在互联网波动时,浏览器正在创建许多 websocket 连接。(问题类似于https://github.com/socketio/socket.io/issues/430

由于应用程序每个浏览器需要一个连接,因此除了一个之外,所有其他套接字都被验证代码无效。但是当我断开一个无效的套接字时,所有的套接字都在断开连接。

简化代码

任何可能的原因以及如何解决相同的问题?

0 投票
0 回答
51 浏览

node.js - 使用 socket.io 和 redis 作为集群

我正在尝试使用 redis 为我的 socket.io 应用程序实现一个集群,因为我想利用服务器中的所有内核,不仅是一个内核,而且如果有必要,将来还可以扩展更多服务器.

如果我理解正确,我将需要以下模块才能使其正常工作。

  • 粘性会话(使用其 IP 地址平衡请求。因此客户端将始终连接到同一个工作服务器,并且 socket.io 将按预期工作,但在多个进程上)

  • socket.io-redis(在不同的进程或服务器中运行多个 socket.io 实例,它们都可以相互广播和发射事件。

将来需要在不同服务器上共享工作进程时,我还需要nginx用作代理。如果我理解正确?

我现在已经redis-server在我的本地服务器上安装了,但是我怎样才能让我的当前代码连接到我的本地 redis 服务器并在几个服务器之间共享所有内容workers

编辑:您作为副本提供的链接中的答案在当前版本的 socket.io 中不起作用(自 2015 年以来)。请检查您提供的链接中的评论。

0 投票
1 回答
870 浏览

socket.io - Socket.io:如何减少许多并发连接的发射延迟?

我正在运行一个 4 核 Amazon EC2 实例(m3.xlarge),它有 200.000 个并发连接,没有资源问题(每个核心在 10-20%,内存在 2/14GB)。无论如何,如果我向所有首先连接到 cpu-core 的用户发出消息,则会在几毫秒内得到它,但最后一个连接的用户会延迟 1-3 秒,并且每个 CPU 内核会在 1-2 秒内达到 100% . 即使在“仅”50k 并发用户(每个核心 12.5k)时,我也注意到了这个问题。

如何减少延迟?

我尝试将 redis-adapter 更改为 mongo-adapter 没有区别。

我使用此代码在多个 cpu 核心上获得粘性会话:

https://github.com/elad/node-cluster-socket.io

测试非常简单:客户端只是连接,什么都不做。服务器仅侦听消息并向所有人发出。

编辑:我用 50k 客户端测试了没有任何集群/适配器逻辑的单核,结果相同。

我在一个包中发布了服务器、单核服务器、基准和 html 客户端:https ://github.com/MickL/socket-io-benchmark-kit

0 投票
1 回答
614 浏览

node.js - 一键通 - 如何在 socket.io 中管理按钮

我有两台托管 socket.io 的服务器,两个应用程序之间的通信由 redis 管理。

当用户 1 在 redis 的服务器端单击按钮时,我将输入为

房间:A -> 用户 1

当用户 2 单击按钮时,他收到房间忙消息,因为用户 1 的 redis 中已经有条目

当用户 2 按下按钮时,我正在从 redis 中删除条目,因此其他用户将轮到发言。

但是当有 100 个用户正在执行操作时,它不能实时工作。

关于如何在 socket.io 中管理按钮的任何想法?

0 投票
2 回答
647 浏览

laravel - 使用 Laravel Mix 编译资产时包含 socket.io 会导致 Windows 10 出错

尝试使用 Laravel Echo/Redis/Socket.io 使用以下版本进行广播:

npm run dev(或生产)导致需要模块'fs'的依赖错误,尽管在安装socket.io时它被认为是可选的。

我已经卸载了 npm 并从头开始,筛选了大量参考可能解决方案的谷歌结果,有人可以帮忙吗?

在此处输入图像描述

下面是我的 webpack 配置的副本:

0 投票
1 回答
1246 浏览

node.js - socket.io 获取所有连接了客户端数量的房间

我现在使用带有多个节点的 socket.io,因此我开始使用 socket.io-redis 适配器(https://github.com/socketio/socket.io-redis)来帮助我在节点之间进行同步。

我想有效地获取服务器上所有房间的列表以及每个房间中相应数量的客户端。

在任何时候,我可能有数千个房间,并且想快速计算每个房间的数量。

要获得我会做的所有房间的列表:

这将返回所有房间的列表,但此时我不确定每个用户有多少连接。

然后我可以运行下一个查询来分别获取每个房间的计数:

这似乎非常低效,因为我会打很多电话来单独计算。有没有比这更有效的方法来获取具有关联连接数的所有房间的列表?我已经研究过修改适配器代码,但我并不太了解代码以进行任何更改。

0 投票
1 回答
697 浏览

angularjs - 在 AngularJS 应用程序中切换状态时,套接字事件会触发多次

我正在将具有多个状态(路由)的 Angular JS 应用程序与在后端运行的节点服务器(套接字)连接起来。当我访问其他状态并返回到编写套接字代码的状态时,它会再次被注册,并且当事件触发时,函数会被多次调用,这会影响性能。

我尝试将 io.connect('localhost') 也放入服务中,并且只将事件放入控制器中,但随后它也被多次触发。

0 投票
0 回答
120 浏览

javascript - 单个用户如何使用 socket.io Rooms 加入多个频道?

客户端正在发送包含多个要加入的房间的对象,因此一旦套接字开始流式传输,用户应该会看到仅与基于房间的用户相关的事件,所以我在事件发生时使用套接字房间方法我检查是否 event.room与发送的“房间”相同连接的客户端开始流式传输到这些频道。

客户数据 =["room1","room2"]

事件数据 ={room: "room2",message:"This message is for room2 user only"}

因此,使用上述数据,用户应该加入两个房间并且应该期待这个事件,因为一个与事件匹配的房间没有发生下面的代码用户正在从与登录用户无关的房间获取事件。知道什么是错误的或更好的方法吗?

服务器.js

app.component.ts