![]() |
Потери сообщений в XMLSocket?
Исходные данные: имеется многопользовательское приложение, которое обменивается данными с сервером через XMLSocket. Перед отсылкой данных проверяется, подсоединен ли сокет.
Проблема: неожиданно возникла ситуация, когда некоторые запросы от клиента не доходят до сервера, при этом при расположении клиентской и серверной части на одном компьютере дропа не происходит, а при нахождении в разных компьютерах в рамках одной локальной сети - да. 2 клиентских части могут быть запущены на одном или разных компьютерах - на результат не влияет. Версия flash player-а везде одна - 9.0.124.0 Досрочного закрытия сокета не наблюдается. Вопрос: каким образом одинаковый swf при соединении с одинаковым сервером могут вести себя по разному в зависимости от компьютера к которому подключаются? P. S. Проблема появилась совершенно неожиданно, и т к клиент заявляет, что отослал запрос, а сервер - что запрос не приходил, что делать - не понятно. |
Я сталкивался со странной ситуацией, когда пакеты не приходили изза оверфлоу буфера, опытным путем пришли к цифре 4Кб (макс размер буфера). При чем не приходил именно первый пакет, остальные могли быть и больше (в смысле, если первый пакет превышал 4К, то все, что сверх этого не посылалось). Но не уверен, что это релевантно...
|
Можно пойти через костыли и посылать каждый запрос несколько раз, присвоив ему какой-нибудь идентификатор, чтобы сервер несколько раз не реагировал.
|
у нас от многотысячной аудитории такой жалобы не поступало.
|
А проблема не может быть на уровне сети? Может, режется что-то? Пробовали на машинах в другой сети/ковырять настройки роутера/шлюза?
Еще можно трафик поснифать... Цитата:
|
AL.exe, я про TimeZero.
Destiny на бинарном сокете, и сейчас действительно практически не поднимается. |
Да, таких проблем не должно быть.
А может быть так, что приходят сразу несколько xml'ек от сервера подряд(скапливаются из-за лага), что не предусмотрено клиентом и он обрабатывает только первую, например? Не работал с xmlsocket, у бинарного сокета такое случается, если лаг в сети достаточный. |
Решил днем проблему=) По сути, Chas был прав. Собственно, при отправке 2 сообщений с малым интервалом они склеиваются, причем as3-шный XMLSocket это, похоже, не предусмотрел, а потому все, что после 0го символа дропается. Проблему решил переходом на бинарный сокет с ручной проверкой наличия нулевого байта не в конце запроса, и чтения в этом случае всех кусков отдельно. Вобщем написал над бинарным сокетом собственную реализацию XMLSocket, и все стало замечательно=)
Вывод: при наличии вероятности отправки нескольких сообщений подряд использование XMLSocket-а чревато эзотерическими проблемами:) |
Надо добавить в FAQ :)
|
| Часовой пояс GMT +4, время: 20:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.