Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Клиент не получает сообщения от сокет-сервера. (http://www.flasher.ru/forum/showthread.php?t=164630)

Hauts 17.08.2011 19:47

Клиент не получает сообщения от сокет-сервера.
 
Всем привет. Столкнулся с проблемой, которую не могу решить несколько дней.

У меня есть тестовый клиент — простейшая флэшка с текстовым полем. Она подключается к сокет-серверу (на джаве) и показывает все сообщения, которые отправляет и получает. Формат сообщений такой: сначала идут 4 байта длины сообщения, потом само сообщение. Сейчас смысловая часть сообщения — просто JSON-строки.

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

Собственно, проблема. Тестовый клиент при нажатии кнопки мыши отсылает сообщения о своем перемещении по условной карте. При отпускании — отправляет сообщение о том, что он "схватил" приз. При тестировании и в идеале его логи выглядели бы так (условно):

Код:

1. Отсылаю: Привет, сервер, подключи меня! Меня зовут Миша, мои координаты: x=10 y=20

2. Получаю от сервера: Привет, Миша, ты подключен! Вот тебе координаты приза с id=1: x=50 y=60

3. Зажимаю кнопку мыши, отсылаю: Я переместился сюда: x=15 y=25

4. Отпускаю кнопку мыши, отсылаю: Я схватил приз с id=1!

5. Получаю от сервера: Появился новый приз с id=2, его координаты: x=100 y=110, а прошлый приз схватил Миша.

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

Когда клиенты начинают игнорировать входящие сообщения от сервера, логи сервера показывают, что сервер получает сообщения и отрабатывает их корректно. Так же тестировали флэшовых клиентов параллельно с нефлэшовыми (в названиях не разбираюсь, putty или типа того), последние все стабильно получают.

Кто-нибудь может мне подсказать, в каком направлении двигаться и в чем может быть траббл?

P.S. В as3, к сожалению, не силен пока.

arkadattx 17.08.2011 20:37

Может это?

t4arty 17.08.2011 20:45

кода не будет? будем гадать на кофейной гуще ... ;( (хотя бы часть кода, которая отправляет данные серверу)

-De- 17.08.2011 20:57

Всопользуйтесь сниффером, узнаете, кто враг.


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

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