Как стать автором
Обновить

Комментарии 23

Супер! Давай текстурой карту Киева с майданом!
Не надо над этим шутить.
Не надо над этим шутить здесь, я бы сказал. Да и вообще затрагивать подобную тематику.
Есть ещё одна причина, по которой используются WebSocket альтернативы, в частности AJAX/JSONP варианты — прокси-сервера, что не позволяют метод CONNECT вообще (редко), либо позволяют только на 443 порт (часто, особенно в корпоративных сетях).

Хотелось бы увидеть продолжение с fallback на эти варианты именно ради поддержки таких клиентов.
Если будет время, то сделаю скрипт, который будет пробовать открывать вебсокет, а при неудаче (или по таймауту) также отправлять запрос аяксом. Тогда если попросить пользователей хабра принять участие в тестировании, то можно собрать статистику — % людей, у кого вебсокеты не работают.

Если процент не существенный, то я вижу два варианта продолжения:
1) сделать полноценные танчики (с кирпичами, лесом, уровнями и т.д.)
2) сделать pecl-расширение, чтобы моя библиотека работала быстрее (сейчас очень медленно работает кодирование/декодирование данных)
Скорее всего буду двигаться по обоим направлениям, возможно даже одновременно.
Выборка по Хабру будет не слишком репрезентативной — местные люди либо работают в компаниях, где таких ограничений нет, либо, вроде меня, обошли это ограничение :)

Вообще, что меня больше всего напрягает в WebSockets — это необходимость в отдельном порту, чего при остальных COMET вариантах не требуется…
Если проксировать через nginx, то отдельный порт не нужен будет. Пример конфига можно посмотреть в предыдущей моей статье: habrahabr.ru/company/ifree/blog/210228/
Хм, любопытно. Самое интересное, что это может как раз решить проблему с проксями.
Если интересно: вот результат WebSocket теста для такого прокси из Chrome (прокси — Forefront TMG): websocketstest.com/result/299253.

К слову — интересный факт — если «пропроксировать» его ещё дополнительно через cntlm — то сразу вот такая картина: websocketstest.com/result/299256.

Ну а вот так выглядит после обхода прокси: websocketstest.com/result/299257.
Большое спасибо. Очень полезная информация.
Благодаря этому сайту я узнал, что прокси на моей работе не поддерживает вебскокеты на 80 порту. websocketstest.com/result/299261
Так же там есть общая статистика: websocketstest.com/ws/stats, но такое ощущение, что она агрегируется каждый раз свежая, поэтому открывается несколько минут.
скриншоты статистики:




У меня есть сайт, который не работает без WebSocket. Какие проблемы: Android в пролёте; Около 2% посетителей, зашедших на сайт видят заглушку (т.к. нет window.WebSocket); у ~8% от тех, кто не увидел заглушку (window.WebSocket есть) не получилось подключиться со 2-й попытки (прокси?).
Так что фоллбек всё ещё имеет смысл, если 10% аудитории вам дороги (хотя для реалтайм игры AJAX фолбек скорее всего будет добавлять заметных задержек даже при использовании keep-alive).
Ну и обязательно нужно реализовать периодический пинг-понг (есть такой тип фрейма в протоколе), чтобы закрывать сокеты отвалившихся клиентов.
Есть всякие COMET варианты — long pooling и прочие варианты. Так что задержек поидее быть не должно.
Задержки в основном на отправке данных будет.
Если для получения данных от сервера ещё можно использовать стриминг (не уверен, что все браузеры поддерживают. Накрайняк jsonp стриминг), то для отправки событий на сервер (нажатия клавиш) придётся слать отдельный AJAX запрос на каждое событие. А это 400-600 байт оверхеда на заголовки.
Все на хабратест хабротанчиков! Ура!
Сервер с использованием libevent лежит. :(
мой хостер не очень удачно разбил жёсткий диск на разделы, поэтому нужное место закончилось в самый неожиданный момент.
проблема устранена
но libevent всё равно подглючивает
А если поменять координаты мапы через консоль, где я нахожусь у других?
IMG
image
На сервер не уходят «координаты», а только команды («вверх», «вниз», «влево», «вправо»), сам же расчёт координат происходит на сервере исходя из команд.
Как показывает практика, в таких играх нужно запускать на поле бота, если игроков мало. Т.к. человек заходит в игру, видит что там никого нет и через минуту уже уходит и не возвращается.
Да, конечно в релизе будут боты, это просто демка.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий