ELB上的套接字io需要连接到应用程序服务器的所有实例
我有一个套接字服务器应用程序写在节点js上,托pipe在Amazon EBS(Elastic bean stalk)上,由负载平衡器
客户端连接到套接字并传递指定的ID,说event_id我的应用程序创build名称为“event_ event_id
”的房间,并join房间。 不同的客户有不同的“event_id”
一个lambda函数连接到套接字,并向应用程序发出一个名为“event_push”的事件,其中包含必要的数据,如event_id
每当我的套接字应用程序(在EBS中的一个实例中)检测到带有event_id
的推送事件时,它就将推送的event_id
广播给房间的所有成员“event_ event_id
”,从而所有成员得到事件的通知
客户端可以连接任何由负载均衡器决定的服务器,而粘性会话可以保持连接
现在我的问题:有没有办法发出“event_push”只有服务器有一个房间名为“event_ event_id
”
Qn:有没有办法将事件发送到EBS中的所有服务器实例? 或Qn:有没有其他解决scheme?
你可以做的是你可以使用Redis或mongoDb来保存一些有关你的事件event_event_id的信息。 您可以将此信息保存在数据存储中,例如样本文档
{ _id : ObjectId, userId : 23, event : event_event_id, server : 1 }, { _id : ObjectId, userId : 23, event : event_event_id, server : 2 }
现在将会做的是你将得到哪个事件属于哪个服务器的信息。 现在,如果loadbalancer向服务器2发送服务器1的请求,而服务器2不能识别该请求,则可以在服务器之间创build通信通道(可以使用socketio,microservice或其他任何方式),并将该请求redirect到服务器1,以便可以触发该特定的套接字事件。
断开连接事件时,必须从mongo或redis中删除套接字ID。
- 从AngularJS发布到Amazon S3时发生错误
- AWS S3文件在浏览器上传W / Signed URL时上传超时
- 如何删除amazon s3文件w / nodejs /angular
- 在Amazon ECS上的Docker中运行Node API的最佳方式是什么?
- 如何捕获亚马逊Alexa的小数?
- 在AWS上使用弹性beanstalk部署Nodejs REST API – 错误找不到自定义模块
- 简单的WebApp – 通过HTML / AWS Javascript SDK将file upload到S3
- 找出哪个AWS Beanstalk环境我的Node.js应用程序当前正在运行的最佳实践是什么?
- 如何在没有Amazon Cognito的情况下使用AWS S3?