Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.07.03;
Скачать: [xml.tar.bz2];

Вниз

Игровой чат в mmorpg (реализация)   Найти похожие ветки 

 
Luarvic   (2011-03-18 12:24) [0]

Вот поспорили с другом, как правильней реализовывать обмен текстовыми сообщениями в играх.
Мой вариант: сервер накапливает все строки чата, и отмечает у клиентов какие именно им нужно отправить, а когда клиент присылает запрос, то ему уже отправляются все отмеченные строки. Соответственно запрос присылается каждые 1-5с
Не мой вариант: на сервер приходит текстовое сообщение, сервер тут же отправляет его всем клиентам которым оно адресовано.

Вопрос: какой из двух выше вариантов более правильный (и почему?)
Заранее спасибо.


 
OW ©   (2011-03-18 14:15) [1]


> на сервер приходит текстовое сообщение, сервер тут же отправляет
> его всем клиентам которым оно адресовано.


пришел - ушел.
Выстрелил и забыл, зачем копить что-то..


 
asail ©   (2011-03-18 14:22) [2]


> OW ©   (18.03.11 14:15) [1]

А если клиент-адресат ушел в несознанку на 5 минут (потеря связи)?


 
Luarvic   (2011-03-18 14:24) [3]

Уточнение: используется протокол TCP


 
Медвежонок Пятачок ©   (2011-03-18 15:11) [4]

православный сервер должен обслуживать запросы клиентов.


 
Luarvic   (2011-03-18 15:31) [5]


> православный сервер должен обслуживать запросы клиентов.

почему?


 
OW ©   (2011-03-18 15:57) [6]


> А если клиент-адресат ушел в несознанку на 5 минут (потеря
> связи)?

он это может сделать и в момент рассылки


 
Медвежонок Пятачок ©   (2011-03-18 16:04) [7]

почему?

Просто потому что он сервер. Обслуживатель.

А еще потому, что в обратном случае :
1. Ты рано или поздно запутаешься в протоколе обмена.
2. Все клиенты должны содержать в себе свои мини-сервера.


 
KSergey ©   (2011-03-18 16:52) [8]

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

Ну потому как часто задержка в получении критична, не надо ее искусственно увеличивать.


 
OW ©   (2011-03-18 17:00) [9]

только так, имхо
> Пришло на сервер сообщение -
>отослал,  не удалось - повторяем


 
Luarvic   (2011-03-18 17:14) [10]

Итого 2 человека за второй вариант и 1 за первый... Чтоже выбрать всетаки?


 
KSergey ©   (2011-03-18 17:21) [11]

> OW ©   (18.03.11 17:00) [9]

Не.
Удобнее, когда разбито на модули/потоки:
- прием сообщений от клиентов и складывание в очередь принятых
- перекладывание из очереди принятых в очередь для отправки, если надо нескольким - дублируем для каждого получателя экземпляр в этой очереди
- рассылаем сообщения клиентам из очереди отправки.

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

Основная задача здесь - сделать не слишком много потоков. Когда клиентов 5-10-30 - не страшно хоть на каждого потоков наплодить. Хоть по два. Когда 500-1000 - нехорошо.


 
OW ©   (2011-03-18 17:23) [12]


> KSergey ©   (18.03.11 17:21) [11]

вообще - то , да. Согласен.


 
tesseract ©   (2011-03-19 22:03) [13]


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


А зачем "просыпаться" ? Асинхронная очередь не должна засыпать.


> Основная задача здесь - сделать не слишком много потоков.


CreateOnConnect - это такая юниксовая отсталость.  Пулы потоков - нормальный шаблон, чем не нравится?



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2011.07.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
2-1300823978
Xalexo
2011-03-22 22:59
2011.07.03
как найти числовой ID, путь и описание службы (service)


15-1300656604
Юрий
2011-03-21 00:30
2011.07.03
С днем рождения ! 21 марта 2011 понедельник


15-1300397390
Юрий
2011-03-18 00:29
2011.07.03
С днем рождения ! 18 марта 2011 пятница


2-1301336263
Drowsy
2011-03-28 22:17
2011.07.03
В обработчике какого события можно перехватить ошибку


15-1300053471
KilkennyCat
2011-03-14 00:57
2011.07.03
о последствиях в японии наглядно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский