Senbonzakuraa
@Senbonzakuraa
Начинаю начинать

Как правильно реализовать комнаты с использованием сокетов?

Пишу онлайн лотерею, хочу создать различные комнаты с ограничением по ставкам и участникам. Вопрос. Как правильно реализовать комнаты?

Собственно вот класс игры GameController.js:

class GameController {
    constructor(timer, minBetPrice, maxBetPrice, maxAmount, room, port, socket) {

        this.bets = {}
        this.users = {}
        this.room = room
        this.timer = timer
        this.minBetPrice = minBetPrice
        this.maxBetPrice = maxBetPrice
        this.maxAmount = maxAmount
        this.amount = null
        this.io = socket
        this.io.listen(port)
        this.initConnect()

    }
    initConnect () {
        try {
            this.io.on('connection', (socket => {
                this.users[socket.id] = {
                    id: socket.id
                }
                console.log(this.users)
                this.connectInRoom(socket)
                socket.on('disconnect', data => {
                    console.log(`${socket.id} disconnected`)
                    delete this.users[socket.id]
                })
            }))
        } catch (e) {
            console.error(e)
        }
    }
    connectInRoom(socket) {
        socket.on('event', data => {
            socket.join(data.room)
            console.log(`${socket.id} - Joined in ${data.room} room`)
            socket.emit('event', {
                success: true,
                message: `UserID - ${socket.id}`,
                room: data.room
            })
        })
    }
}


Вот содержимое app.js:

const smallRoom = new GameController(10, 10, 20, 20, 'smallRoom', 4040, io)
const highRoom = new GameController(5, 0, 10, 20, 'highRoom', 4045, io)


С клиента по событию event я получаю название комнаты и подключаюсь к ней. Насколько я понимаю, не нужно создавать 2 экземпляра класса для разных комнат в app.js? Потому что сейчас у меня происходит сразу 2 коннекта.

В дальнейшем при создании ставки в определенную комнату мне нужно будет отправлять ставку и название комнаты в которую она пойдет?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы