Поток данных, в какую сторону идти?

Я собираюсь запустить игру HTML5 с тяжелой логикой в ​​java-скрипте, я хочу сохранить некоторую логику на стороне сервера, чтобы гарантировать, что моя игра будет играть только на моем сервере.

Я решил выбрать node.js, так как он очень быстрый, я подумал о двух способах:

  1. Чтобы использовать AJAX, клиентская сторона будет вызывать метод на стороне сервера, который будет возвращать вычисленные числа для обновления игровой сцены, этот вызов будет вызываться каждые 2 секунды.

  2. Чтобы открыть сокет с помощью node.js, чтобы клиенту не приходилось каждый раз вызывать сервер, вместо этого он продолжал прослушивать данные, передаваемые из открытого сокета, что будет обновлять данные каждые x секунд.

Рассчитанные данные невелики, они составляют около 0,5 КБ в секунду, клиенту также необходимо сообщить серверу, в каком состоянии он находится, поэтому данные, отправляемые клиентом, составляют около 0,1 КБ / х в секунду, в зависимости от игры.

Кажется, что второй подход лучше, но мне понадобятся сотни портов для обработки одновременных игроков.

Итак, с точки зрения производительности и минимизации используемой пропускной способности, какой путь выбрать? или есть еще лучший способ? кто-нибудь может помочь?

1 ответ

Решение

Как вы упомянули, вы создаете веб-приложение JavaScript, которое регулярно отправляет информацию на сервер или получает обновления с него, тогда, по моему мнению, вам следует использовать WebSocket(особенно если вы разрабатываете в HTML5), что уменьшает пропускную способность вашего приложения. использует.

Что касается производительности, я бы также выбрал WebSocket, выполнив несколько экспериментов по измерению, например, усредняя время прохождения туда и обратно для 100 запросов за раз, WebSocket имеет меньшее время прохождения туда и обратно. Вот ссылка теста производительности может сказать результат: http://www.peterbe.com/plog/are-websockets-faster-than-ajax

Другие вопросы по тегам