首页 > 解决方案 > Socket.IO 可以扩展吗?

问题描述

我真的很喜欢 socket.io 的设计,我正计划使用它制作一个匹配系统。到目前为止,我所做的一切都奏效了。但是,我担心可扩展性,如果我开始拥有数千个大厅,并且有数千名玩家连接到它,会发生什么?如何确保 socket.io 可以扩展到数百万或至少数十万的连接?

标签: javascriptsocket.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})
}

并为您的客户端重复此代码


推荐阅读