Модернизация Игрового сервера СИ

Aug 16, 2015 16:12


Одна из задач, решаемых в рамках проекта СИ-онлайн - сведение работы Игрового сервера к одному порту. Это удобно и для клиентских подключений, и для безопасности.

В версии 5.3 Игровой сервер прослушивает целую массу портов: 8080 для создания игр и получения информации о них (веб-сервис), а также для каждой из игр открывается по два порта: один - для поддержки игрового протокола (TCP), другой - для доставки мультимедиа-файлов (HTTP).

Такое разделение сложилось исторически. Изначально мультимедиа в вопросах не было, и использовался один TCP-порт. Когда появилось мультимедиа, его невозможно было повесить на тот же порт, так как там сидел самописный обработчик сообщений, и он не был готов понимать HTTP-запросы. Был открыт дополнительный порт.

При создании Игрового сервера за основу был взят существующий принцип открытия портов, и он был просто размножен для поддержки множества игр. Опять же, причина была в том, что для функционирования единственного входа на все игры потребовался бы сложный обработчик.

А теперь хочется всё свести к единому порту, что упростит настройку файервола и подключение разнородных клиентов.

Вся проблема заключается в том, что не было возможности прикрутить HTTP-запросы к TCP-порту (усложнялся анализ сообщений внутри игры) и TCP-сообщения к HTTP-порту (HTTP-запросы обслуживались всё равно собственным обработчиком, но, опять же, это было бы очень сложно).

Проблему решают веб-сокеты. Либое подключение становится подключением по HTTP, а при желании его можно переключить в TCP. Один порт способен работать с обоими типами подключений.

Вместо самописного обработчика в Игровой сервер был встроен стандартный обработчик, что привело к большей надёжности получения мультимедиа файлов. С помощью механизма маршрутизации удалось свести все мультимедиа-порты игр к общему значению. Туда же был включён и сервис, обслуживающий список игр.

Это первый этап модернизации. На втором этапе будут подключены веб-сокеты, и останется только один рабочий порт.

Было:

Сервис
Игры

8080
1001
1002
1003


2001
2002
2003


Стало:

Сервис (для обратной совместимости)
Сервис
Игры

8080

1001
1002
1003


8008

Будет:

Сервис
Игры

8008

Свояк-софт

Previous post Next post
Up