На момент написания этой статьи у вас есть 3 варианта:
WebSockets
WebSockets - это упрощенный протокол обмена сообщениями, использующий TCP, а не реализацию JavascriptTCP сокетов, как вы уже заметили.Однако, помимо первоначального рукопожатия, нет никаких HTTP-заголовков, передаваемых туда и обратно после этой точки.Как только соединение установлено, данные проходят свободно, с минимальными издержками.
Длинный опрос
Длинный опрос, в двух словах, подразумевает, что клиент опрашивает сервер дляновая информация периодически с HTTP-запросами.Это очень дорого с точки зрения процессора и пропускной способности, так как вы каждый раз отправляете огромный новый HTTP-заголовок.По сути, это единственный вариант, когда речь идет о старых браузерах, и в таких библиотеках, как Socket.io , в качестве запасного варианта используется длинный опрос.
WebRTC
В дополнение к тому, что уже упоминалось, WebRTC обеспечивает связь через UDP.Протокол UDP давно используется в многопользовательских играх, не связанных с сетью, из-за его низких издержек (по сравнению с TCP), низкой задержки и неблокирующей природы.
TCP «гарантирует», что каждый пакет будет доставлен (за исключением катастрофического сбоя сети), и что они всегда будут поступать в том порядке, в котором они были отправлены.Это отлично подходит для критически важной информации, такой как регистрация результатов, хитов, чатов и т. Д.
UDP, с другой стороны, не имеет таких гарантий.Пакеты могут поступать в любом порядке или не доставляться вообще.Это на самом деле полезно, когда речь идет о менее важных данных, которые отправляются с высокой частотой и должны поступать как можно быстрее, таких как позиции игроков или входные данные.Причина в том, что потоки TCP блокируются, если один пакет задерживается во время транспортировки, что приводит к большим промежуткам в обновлениях игрового состояния.С UDP вы можете просто игнорировать пакеты, которые приходят с опозданием (или вовсе не поступают), и переходить к следующему полученному вами, создавая более плавный опыт для игрока.
На момент написания этой статьи,WebSockets - это, вероятно, ваш лучший выбор, хотя внедрение WebRTC быстро расширяется и может на самом деле быть предпочтительным к тому времени, когда вы закончите со своей игрой, так что это то, что нужно учитывать.