Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Холивар: http против сокетов (http://www.flasher.ru/forum/showthread.php?t=121954)

Котяра 27.02.2009 11:34

Холивар: http против сокетов
 
Собственно нужен холивар на тему использовать/не использовать сокеты в MMORPG.
Я опишу плюсы и минусы как они мне видятся.

МИНУСЫ
1) Считаем что в игры играет в основном офисный планктон, которым злые админы отрубают все порты кроме 80. Соответственно играть они не смогут. Методы обхода? Прокси? JavaScript?
2) Нагрузка на сервер. Многие серверные прогеры говорят, что держать сокеты повышает нагрузку на сервер. Эту тему тоже хочется пообсуждать:имеем 500 коннектов для перемещений игроков по карте. каждый игрок получает НОВУЮ инфу о видимых объектах.
Формат одинаковый, что по сокету, что запросами, но запросы пингуются раз в 2 секунды. Где нагрузка больше? держать коннект или раз в 2 секунды отсылать http запрос апачем?

ПЛЮСЫ:
-плюсов гораздо больше, чем минусов, описывать их не буду, так-как в основном волнуют минусы.))

Жду холивара.:yahoo:

etc 27.02.2009 12:30

1) HTTP-прокси;
2) Держать коннект.

Холиварить не собираюсь, под MMORPG, особенно realtime, сокет обязателен.

Котяра 27.02.2009 12:36

Цитата:

Сообщение от __etc (Сообщение 801526)
1) HTTP-прокси;

Ладно, насчет холивара, я, наверное, погорячился)))
Можно подробнее о прокси?

BlooDHounD 27.02.2009 12:49

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

DarkLight 27.02.2009 13:00

По моим экспериментам, уже по локальной сети 3 http-запроса в секунду было предельной скоростью работы. Для многопользовательской игры - только бинарный сокет или rtmp-соединение

Котяра 27.02.2009 13:05

Для решения первого вопроса случайно нашел такой вот замечательный класс:
Код AS3:

com.adobe.net.proxies.RFC2817Socket

Кто нибудь работал с ним?
PS: описание механизма туннелирования

wvxvw 27.02.2009 17:10

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

Котяра 27.02.2009 20:44

Цитата:

Сообщение от wvxvw (Сообщение 801600)
Смотри, как бы принцип простой: ХТТП - это точно такой же сокет (сорри за кривую терминологию). Вобщем, ХТТП сервер это тот же сокет, только уже наученый получать и отправлять информацию отформатированую определенным образом. При этом, если самой информации не много, то дополнительной информации нужной для ее форматирования может оказаться в разы больше чем полезной. Точно так же, например, если ты попробуешь положить текстовый файл из одной буквы в зип-архив, то ты проиграешь в объеме файла в несколько десятков раз (т.е. зип-файл будет гораздо больше текстового) :)

Весь текст — бред. Я говорил о clearTCP/HTTP, именно: сокеты/пинги

Добавлено через 4 часа 23 минуты
Цитата:

Сообщение от __etc (Сообщение 801526)
2) Держать коннект.

Либо я не понял твой ответ, либо ты не понял мой вопрос: что хуже? ты сказал коннект, думаю, что это очепятка.

wvxvw 28.02.2009 01:41

Ну если вы так хорошо разбираетесь - чего спрашиваете? :) Или холивар это объязательно значит не разбираясь в поставленом вопросе хамить собеседнику?

Котяра 28.02.2009 01:53

Уважаемый , никаким образом не хотел Вас обидеть, просто Ваш текст (очень полезный для понимания основ передачи пакетов данных) - не относится к вопросам, поднятым в этом топике.

Добавлено через 10 минут
Цитата:

Сообщение от BlooDHounD (Сообщение 801534)
мдя ... если Вы нашли программистов, которые считают, что несколько рас в секунду открывать и закрыть конекты, быстрее чем держать один открытый, то скажите, что бы их уволили.

Я сам в шоке. думал их единицы. пока со мной согласен только 1 из 7 сервачников(пёрл, ява)
На самом деле они боятся новшеств и никак работать не хотят.
ведь есть FLAP, есть RED5 итд... а Им сцыкотно... типа вот ведь работала игра 4 года по хттп без флэша и хорошо..

BlooDHounD 28.02.2009 08:28

бугага. с очень страшными словами ( FLAP, RED5 ) я бы тоже не хотел работать :)

scarbo 28.02.2009 09:50

Слушай,хорош матерится,оборзел совсем.

etc 28.02.2009 11:03

Цитата:

Сообщение от Котяра (Сообщение 801671)
Либо я не понял твой ответ, либо ты не понял мой вопрос: что хуже? ты сказал коннект, думаю, что это очепятка.

Хуже — запросы. Постоянный коннект — лучше.

И да, товарищ Котяра, если вы не прекратите слать куда-подальше тех, кто по вашему отвечает не по теме в разделе флейма, то я приму меры.

Котяра 28.02.2009 11:47

Извините. Был неправ. Накипело.

Добавлено через 7 минут
Цитата:

Сообщение от wvxvw (Сообщение 801600)
Смотри, как бы принцип простой: ХТТП - это точно такой же сокет (сорри за кривую терминологию). Вобщем, ХТТП сервер это тот же сокет, только уже наученый получать и отправлять информацию отформатированую определенным образом. При этом, если самой информации не много, то дополнительной информации нужной для ее форматирования может оказаться в разы больше чем полезной. Точно так же, например, если ты попробуешь положить текстовый файл из одной буквы в зип-архив, то ты проиграешь в объеме файла в несколько десятков раз (т.е. зип-файл будет гораздо больше текстового) :)

Мне все это понятно, причем ответом выше, я выложил ссылку объясняющую механизм туннелирования сокетного соединения по HTTP протоколу. По поводу терминологии: ХТТП - это протокол передачи данных по TCP, (обычно 80 порт) реализованный для веб-сервисов.

Добавлено через 15 минут
Цитата:

Сообщение от BlooDHounD (Сообщение 801793)
бугага. с очень страшными словами ( FLAP, RED5 ) я бы тоже не хотел работать :)

Я не говорю обязательно работать, я говорю, что есть успешные реализации с ИСХОДНЫМ кодом. кроме того есть elektroserver и целая куча других готовых сокетных серверов на любых языках.

BlooDHounD 28.02.2009 14:57

Котяра, госпади ...
все "реализации" всегда имеют "исходный код".
да где Вы это берёте эти названия? Вы посещали шоу уродцев?

успешные реализации, Вам никто не даст никогда за бесплатно. за бесплатно Вам дадут более менее стабильный альтруизм, который Вы напильником под свои нужды будите пилить дольше, чем написать тоже самое с нуля. а за те деньги, за которые продаются успешные реализации, Вам их покупать точно не захочется %)

и объясните мне ... у меня складывается впечатление, что Вы слабо себе представляете о чём говорите. Вы приводите примеры серверов, у которых абсолютно разный функционал, и предназначены для разных целей, но их сокетность составляется 5% от их самих. Вы считаете, что написать сокетный сервер с нуля, это очень сложно?

TERRORist 28.02.2009 15:38

SFS через 80 начинает работать, если остальные порт(ы) закрыты

iflamberg 28.02.2009 15:41

2Котяра:
ну привели вы пример тунеллирования и что? В хорошем офисе, где открыта только ася, скайп и правильно настроенный http-прокси все эти извращения никак не помогут. А там где помогут - вы будите сами приходить настраивать или выложите талмуд по настройке? Хорошая пошагавая игра должна поддерживать и сокет-соединение и http-запросы через прокси. Так, как это сделано в таймзеро, например. Для интернет-казино - HTTP-запросы - лучший выбор. Для реалтайма - только сокет-клиент и сервер. Впрочем и некоторые пошаговые игрушки забивают на тех, у кого закрыты порты, Dofus, например.
Для большой игрушки надо писать свой сокет-сервер. На чем нибудь быстром. cpp, например. Естественно, поглядев, что там у других, чтобы изобретать велосипед. Только в elektroserver глядеть не надо =)


2BloodHound: флап - это что за зверь? вот это что ли http://www.simonf.com/flap/? Последнее обновление 2004?

А ред5 растет по-немногу. Для вещания видео и мелких игрушек его вполне можно юзать.

2тер:
Цитата:

SFS через 80 начинает работать, если остальные порт(ы) закрыты
Ну и что? Да вы поймите. Если админ параноик или дилетант(потому что самый простой способ интернет в локалке настроить), то будет тупо стоять http-прокси и внутреняя локальная сетка. HTTP-прокси принимает http-запросы в себя, выполяет, передает ответ клиенту. Все. У пользователей нет ничего - они не видят компы за пределами локальной сетки, не могут их даже пинговать, у них нет реального IP-адреса.

BlooDHounD 28.02.2009 15:53

iflamberg, а чего Вы у меня спрашиваете? мне гугл самому, чего только не вывел. спросите, у котяры %)

Котяра 28.02.2009 16:31

Цитата:

Сообщение от iflamberg (Сообщение 801882)
2Котяра:
ну привели вы пример тунеллирования и что?

http://code.google.com/p/as3corelib/...Socket.as?r=55
вот в это м классе есть функция:
Код AS3:

  private function onConnect(event:Event):void
                {
                        this.writeUTFBytes("CONNECT "+this.host+":"+this.port+" HTTP/1.1\n\n");
                        this.flush();
                        this.redirectConnectEvent();
                }

которая обеспечивает туннелирование.
Описание как это происходит в моей ссылке. Примерчик работы скоро выложу.

Добавлено через 2 минуты
Цитата:

Сообщение от iflamberg (Сообщение 801882)
2Котяра:
2BloodHound: флап - это что за зверь? вот это что ли http://www.simonf.com/flap/? Последнее обновление 2004?

Угу. единственный перл сокет сервер+амф который я видел.

iflamberg 28.02.2009 16:44

ну выкладывайте примерчик =)

Котяра 28.02.2009 16:45

Цитата:

Сообщение от BlooDHounD (Сообщение 801865)
Котяра, госпади ...
все "реализации" всегда имеют "исходный код".
да где Вы это берёте эти названия? Вы посещали шоу уродцев?

Вы считаете, что написать сокетный сервер с нуля, это очень сложно?

я имел ввиду Открытый исходный код. шоу уродцев -может быть))
Я так не считаю, так считают наши прогеры. начинают кричать про то нужно учеть обработку ошибок, сериализацию и.т.п. я иx посылаю посмотреть на работающий код. Я никого не заставляю использовать ред5 или (боже упаси) флап.

BlooDHounD 28.02.2009 19:51

я понял, что Вы имели ввиду. просто у меня проблемы с адекватной реакцией на всякого рода двусмыслицы.

какова Ваша цель, при выкладывании в качестве примеров данных "чудо реализаций"?

Ваши чудо-программеры просто ленивы. то, что Вам сказали, учитывать необходимо в любом случаи :) совершенно независимо от способа конекта.

Badim 02.03.2009 00:49

а я юзаю SFS+BlueBox.
поэтому мой сервер поддерживает и сокеты и хттп.
можете даже сами реализовать такое чудо, если SFS чем то не нравиться.

Котяра 02.03.2009 10:17

Цитата:

Сообщение от Badim (Сообщение 802156)
а я юзаю SFS+BlueBox.
поэтому мой сервер поддерживает и сокеты и хттп.
можете даже сами реализовать такое чудо, если SFS чем то не нравиться.

Я не говорю про поддержу сервером, основной залип в том, чтобы флэшкой по сокету коннектится по 80 порту использую TCP туннелирование, что с успехом реализуется, используя протокол RFC 2817 и класс RFC2817Socket из адобовской библиотеки http://code.google.com/p/as3corelib/

Кстати никто не в курсе, будет ли эта библиотека включена в плеер когда нибудь?
Очень там классы нужные.


Часовой пояс GMT +4, время: 18:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.