Вы задумывались, что когда вы играете в Доту, Кс или Apex, то вы видите у себя на компьютере то же, что и другие игроки в режиме реального времени? Расположение на карте, когда кто-то стреляет или использует способности - все эти данные синхронизированы между всеми игроками одновременно.
Могу дополнить примером работы с сокетами.
Первоначально, надо приконнектиться, это выглядит так:
socket.Connect("192.168.0.1");
После чего, есть две основных элемента:
1. Передача данных сокет-серверу, как правило это называет словом "emit", с названиям метода/ивента и его параметрами.
socket.Emit("PlayerConnect", playerId);
И тогда эта информация передается с клиента на сервер (и её могут получить все клиенты, которые работают с этим сокетом).
2. Получение данных от сервера, путем подписывания на события, обычно ключевое слово "subscribe", с названием ивента/события и что должно произойти(как правило, это ссылка на функцию/метод).
socket.Subscribe("HealthChanged", UpdateHealthUI);
Как-то так.
Да, а еще со стороны сервера есть различные способы взаимодействия с соединениями/топиками/каналами/событиями
Можно либо всем слать сообщение, иначе назаывается броадкастить (broadcast), например глобальное событие: "Появился новый босс в подземелье Х, игроки попытайте свою удачу"
А есть возможность точечно игроку (конкретному подписчику события), например игрок запросил уникальную и приватную информацию, и только он получит ее от сервера)
А еще соединение может обвалиться и придется переподключаться. Например, можем повесить коннект при срабатывании socket.close