Как мне реализовать COMET для моей (Flash) браузерной игры?
В настоящее время я пытаюсь написать браузерную игру, которая позволяет нескольким пользователям перемещаться по 2D-карте. Он основан на RPG и требует COMET в качестве метода для двух пользователей, появляющихся и взаимодействующих на одном экране, если они окажутся в одном кадре.
Также в игре я встраиваю карты в SWF-файл, но использую HTTP-запросы для получения данных с локального сервера, когда игрок входит в некоторые ключевые зоны, которые я выделил. Я думал об использовании XMLSocket, но мне было интересно, есть ли библиотека или какая-то другая реализация, отличная от XMLSocket, которая поможет мне передавать или передавать информацию нескольким браузерам.
(Кстати, я относительно новичок во взаимодействии с Flash и сервером и клиентом, изучаю его около 4 недель... ссылки полезны!)
2 ответа
Единственное реальное решение - Long-Polling или Streaming...BlazeDS реализует оба варианта.
- Я слышал, что BlazeDS и LiveCycle Data Services от Adobe поддерживают передачу данных. Хотя LCDS является коммерческим, первый из них с открытым исходным кодом. Я не использовал ни одного из них, поэтому не могу ничего сказать о производительности или других аспектах.
- Использование
XMLSocket
требует от пользователя открытия соответствующего порта, который может быть заблокирован брандмауэром (иногда корпоративным брандмауэром, над которым пользователь не имеет никакого контроля). (это касается даже BlazeDS и LCDS, я считаю). - Вы можете попробовать старый добрый
URLLoader
+URLRequest
комбинация для опроса сервера через фиксированные интервалы для обновлений. Если вы планируете провести длинный опрос (отказывая в ответе до тех пор, пока что-то не произойдет), имейте в виду, что флэш-тайм-аут запрашивает URL-адреса через 30 секунд.