Но насколько я понимаю, HTTP-связь между клиентом и сервером для многопользовательской игры совершенно некорректна.
Зависит от того, что это за игра. Если это какой-то онлайн-шутер, то да, конечно это будет некорректно, но для какой-нибудь пошаговой стратегии - это будет вполне допустимо.
Socket.io и SignalR сделаны поверх websocket, который является расширением для HTTP и построен поверх TCP.
Lidgren network сделан поверх UDP и сейчас активно не поддерживается.
Прежде чем определить, какой именно тебе протокол и подход будет применим тебе нужно ответить на следующие вопросы:
1. Какие именно данные (сообщения) нужно передавать
2. Сколько их будет генерировать один клиент
3. Сколько клиентов должен держать сервер в рамках одной игровой сессии.
4. Какие задержки допустимы для каждого из типов сообщений.
5. Как себя должна вести игра при потере каких-то сообщений и как ты можешь попробовать их компенсировать
6. Клиентом для тебя является браузер или же десктопное/мобильное приложение, или всё сразу.
После всего этого ты сможешь определить, какой протокол тебе допустим - это будет http, вебсокеты, или вообще что-то кастомное поверх UDP или TCP.
Причём для разных типов сообщений ты можешь использовать разный транспорт. Например, для передачи информации о покупках на внутриигровом рынке ты вполне можешь использовать http, а для передачи уведомлений об этих покупках - websocket, а для передвижений персонажей и их действий во внутриигровом мире - UDP, а для загрузки информации о мире и самих игроках - TCP.