Просмотр полной версии : Непрерывное соединение: server-side = Comet, Red5 или что?
Всем привет! :)
Профи, подскажите пожалуйста, как организовать непрерывно открытое соединение с Java-сервером? Я нарыл флеш-сайт livegames.ru (http://www.livegames.ru), который делает именно то, что мне нужно: гоняет данные туда и обратно через одно единственное непрерывно открытое соединение, без заголовков, и причём через порт 80! Как он это делает, ума не приложу. :umnik2:
Стандартная реализация Comet (http://en.wikipedia.org/wiki/Comet_%28programming%29) на Jetty (http://www.mortbay.org/), которую мне советовали, заточена под Ajax. Она обеспечивает непрерывный поток данных только от сервера клиенту, но клиент при этом вынужден отдавать полноценные запросы, с HTTP заголовками, естественно через отдельное TCP-соединение.
Начал было ковыряться в Red5, но похоже это вообще не то, что мне нужно.
Please Help!
гоняет данные туда и обратно через одно единственное непрерывно открытое соединение, без заголовков, и причём через порт 80! Как он это делает, ума не приложу. :umnik2:
И что в этом загадочного? Обычный сокет по 80-ому порту. Или вы думаете, что 80-ый порт обязательно HTTP?
Ну может и ничего загадочного, но при этом эта дрянь ухитряется выполнять обычные HTTP-запросы на этот же порт. Вывод: либо у них полностью самописный HTTP-сервер, либо они как-то очень хитро использовали существующий. Вот и хотелось бы знать, как именно.
TERRORist
29.01.2008, 21:57
+1
тож хочу узнать. полезно
С чего вы взяли, что запросы идут именно на тот же домен, на котором игра? Проверять я не проверял, но не вижу смысла в извращениях подобного рода.
IDVsbruck
03.02.2008, 19:41
Занятный сайт. Особенно ввиду того, что разрабатываем нечно похожее, но флешки разные и подгружаются.
Декомпилировал флешки, оставленные в кеше после посещения этого сайта. Что интересно, мы перепробовали несколько вариантов взаимодействия с серваком (сокеты, флекс), но остановились на том, который сейчас работает: POST-запрос от клиента, обработка сервером и возврат ответа в виде xml-структуры, которая парсится и которая достаточно универсально понимается при любом виде запросов.
Так вот, на данном сайте используется точно такая же структура - отправка запроса и получение xml. Это, кстати, решает все поставленные в данном топике вопросы: и про порты, и про непрерывность, и про мультигейминг.
только про нагрузку не решает -)
IDVsbruck
05.02.2008, 20:10
Почему? С чего такие выводы?
Есть еще реализация comet'а - http://www.lightstreamer.com/ - там даже библиотеки под флэш (ас1, ас2, ас3) есть.
Всем спасибо, итоги здесь (http://gzip.rsdn.ru/forum/?mid=2840130) (сорри за кросс-пост на другой форум, лениво копировать и заново форматировать).
Ключевые слова для поиска: Comet, Jetty, Continuations, Tomcat, CometProcessor, CometEvent, Content-Encoding: chunked.
P.S. 7thsky, спасибо за ссылку, но я к тому времени уже практически решил проблему. В другой раз гляну, как время будет.
IDVsbruck
18.02.2008, 13:56
event.setTimeout(xxx) служит для того, чтобы система знала, через сколько возвращать ответ, если не возникло события, по которому ответ должен уйти клиенту.
Другими словами, если от флешки нет "возбудителя" запросов, а на сервере - ответов, то при строке event.setTimeout(5000) флеш и сервер будут обмениваться пакетами каждые 5 секунд.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.