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

Программист

Отправить сообщение
По описанию не понял как это должно работать, и в чем преимущество перед обычной схемой.
Данный формат выбран потому, что проще всего понять как решать задачу на примере. Поэтому основная суть статьи содержится к комментариях к коду, потому что я считаю неудобным читать отдельно код, и отдельно пояснения к нему. Плюс в статье код расположен в такой последовательности, которая позволяет проще понять устройство сервера.
Выклюл сервер, потому что, как это не печально, посетители использует возможность задания произвольного имени для разжигания межнациональной вражды и рекламы.
Возможно вы приведете пример, как в данном случае можно реализовать оповещение через каналы?

Проект синтетический, пишется для обучения, поэтому не вижу особой необходимости в этом.
Разработчики позиционируют горутины как очень легкие и дешевые треды (которые не обязательноо являются настоящими тредами). И для го-программы нормально иметь тысячи горутин.

Насколько я помню асинхронный с виду браузерный js на самом деле однопоточный, и вызовы просто напросто встают в очередь, создавая видимость асинхронности. Не знаю как обстоят дела в Node.js, но если я правильно понимаю, асинхронность основана на последовательном выполнении функций в очереди вызовов, что не мешает это делать в нескольких потоках.
Для чего в данном случае могут понадобиться каналы?
GOMAXPROCS можно задать через переменную окружения.
serve создает по горутине на каждое входящее соединение, таким образом отвечая на каждое входящее соединение, по сути, асинхронно.
Пакет http сам по себе асинхронен.
Главный цикл — в горутине.
Отсылка ответа в отдельной горутине, что отмечено в тексте.
Поясните, что имеется ввиду под исключением упрощенного параллельного программирования.
Потому что это усложняет код как сервера, так и клиента, а поэтому удлиняет статью.
Впрочем, можно добавить пвп элемент в следующем релизе и статье.
Это связано с тем, что при каждом клике, сервер оповещает всех подключенных клиентов об изменениях. Много клиентов — много сообщений от сервера, и клиент просто не успевает обрабатывать такое количество данных.

Решить это можно, например, ограничив количество отсылаемых данных сервером: не при каждом изменении оповещать клиентов, а в фиксированные промежутки слать снапшоты мира.

Помимо этого, лаги можно маскировать на клиенте, используя, например, интерполяцию данных.
Генерятся рандомно, и с каждым уровнем врагов все больше.
Они в общем-то завершены.
Просто качество их реализации оставляет желать лучшего.
Хотя, учитывая что это не продукты для широкой аудитории, а просто, в случае бомбермена, упражнение на прочитанный мануал по канвасу, а в случае тетриса — реализация идеи, что каждый программист должен написать свой тетрис, то уровень меня вполне удовлетворил.
Игры автора оригинального текста.

Что касается моих игр, я сам только учусь.
В сети есть только кривенькая поделка в стиле бомбермена на js.
2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность