问题标签 [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.
socket.io - socket.io-redis 如何处理房间?
如果我有多个进程并且正在使用 socket.io-redis,那么当我这样做时,io.to(room).emit(namespace, message);
这是否可以无缝且高效地处理?还是我误解了socket.io-redis的作用?
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
但没有别的。然后我monitor
Redis 并看到以下内容 -
"publish" "socket.io#/#" "\x93\xa7emitter\x83\xa4type\x02\xa4data\x92\xa8new_post\xa3Yep\xa3nsp\xa1/\x82\xa5rooms\x90\xa5flags\x90"
我的服务器在使用 Redis 时也看不到消息,我用 -
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 负载和内存负载没有帮助
请指导我
javascript - 如何使用 node js 开发实时聊天
我想使用 node js 开发实时聊天。谁能指导我如何做到这一点?我决定的用例:
- 用户将在应用程序屏幕上看到标有“在线聊天支持”的链接或图标。
- 单击此按钮,将打开聊天窗口。它会指示在线并准备就绪的代理的名称,或者将指示代理正忙,并在代理可用时更改该状态。
- 在代理方面,在为更多用户生成忙碌消息之前,最多将打开 3 个窗口(来自 3 个用户)。这个数字 (3) 将是可配置的。
- 代理将获得用户正在 ping 他的屏幕的名称。
- 由于会有多个代理,我们需要将一堆屏幕(或应用程序)标记到特定代理的能力。
- 需要一种负载分配机制,新的查询将被路由到任何空闲的代理,并标记到该屏幕或应用程序。
- “我们需要在特定时间窗口设置不可用消息的能力——如果聊天支持仅在 IST 上午 9 点到下午 6 点之间可用,我们应该能够为在此窗口外登录的用户设置一条消息,上面写着‘在线聊天支持仅在……之间可用。””
请告知如何进行。
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
(用于缓存失效等):
node.js - 使用 socket.io-redis 模块监听套接字
使用socket.io-redis
模块,我们可以轻松地emit/broadcast
使用saved-socket-id
.
另一方面,在没有任何额外/外部 redis sub/pub 客户端的情况下侦听套接字的最佳方式是什么。
当我初始化socket-io.redis
模块时,我已经使用 return_buffers: true配置了一个订阅者,我认为模块在幕后解决了它,但我找不到任何示例。
有没有一种平滑的方法来做到这一点socket.io-redis
module ?或者每个集群套接字侦听器必须发布消息,我必须手动从其他集群订阅它们?
谢谢你。
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', 我拥有它们,但它仍然会出错并导致节点崩溃。
javascript - 在全局数组 + Node.js 中存储 socket.io 发射
有没有办法将 socket.io 的所有发射存储在一个全局数组中,以便我可以在新用户加入网站时循环发射,并可以拾取“画布绘图”当前所在的位置。我希望新用户查看已经完成的工作,然后进行协作。
我还有其他方法可以解决这个问题吗?
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 设置了我的实例的安全组。
我错过了任何步骤吗?请帮忙。非常感谢。
javascript - 在 laravel 5.2 中使用 socket.io 建立连接时 io.on 不工作
我在连接 io.on 功能时遇到问题(我真的很沮丧)。我正在使用 express、ioredis 和 socket.io。redis 工作正常,但 socket.io 不工作。它不工作。请帮助。
客户端