javascript - Socket.IO 可以扩展吗?
问题描述
我真的很喜欢 socket.io 的设计,我正计划使用它制作一个匹配系统。到目前为止,我所做的一切都奏效了。但是,我担心可扩展性,如果我开始拥有数千个大厅,并且有数千名玩家连接到它,会发生什么?如何确保 socket.io 可以扩展到数百万或至少数十万的连接?
解决方案
您可以使用UWebSocket.js获得更好的性能和大规模程序
但是你需要像socket.io那样实现你的通信协议,你可以像这个例子那样实现它(不要在生产中使用它这只是一个玩具例子)
const Event = require('events')
class EventRouter extends Event {
async process (msg) {
this.emit(msg.event, msg.data)
}
}
let router = new EventRouter()
// set up your connection and sockets
socket.on('message', router.process)
router.on('your route & your event ....', msg => {
// your handler
})
function emit(socket, event, data) {
socket.send({event, data})
}
并为您的客户端重复此代码
推荐阅读
- python - 如何使用 Matplotlib 绘制带有时间戳的实时数据
- python - 适用于 Python 3 的 Kivy 启动器
- ios - React-Native 上 iOS 调试模式下的离线捆绑
- python - 使用 python 从 SNS 主题 ARN 获取 SNS 主题名称
- amazon-web-services - 我有一个 PowerShell 脚本,用于检查 1 个 AWS 账户的 ACM 状态。如何在不使用 IAM 密钥的情况下为多个 AWS 账户扩展它?
- c# - 如何使用不同的取消令牌处理 20~ 个任务/线程
- selenium - 为什么我的硒函数说找不到元素
- amazon-web-services - CloudFormation AWS::CertificateManager::Certificate 自动证书验证
- javascript - Firebase:使用“in”代替“OR”查询
- mongodb - Mongo不想删除