0

Я сделал приложение flash chat на Flash Builder 4.6, которое подключается к серверу Flash Media (Development) на моем 32-битном сервере centos5, проблема в том, что я оставляю его открытым в браузере около 2 минут простаивает, затем пытается вызвать netconnection, чтобы получить историю чата или отправить общедоступное сообщение или вызвать функцию на сервере с помощью метода nc.call(), он вдруг говорит, что netconnection.connect.closed .. Если я не позволю, он не дает мне событие connenction.closed.nc.call() закрывает netconnection

В то время как это происходит, я просматриваю консоль администратора fms для активных пользователей, но клиент не падает и, кажется, все еще подключен к серверу ... я закрываю браузер, клиент все еще находится в консоли fms .. (обычно, когда я закрываю браузер или когда я использую nc.close(), клиент di sconnects и я вижу быстрые изменения в консоли FMS админ ..

тогда еще наблюдая FMS консоли администратора, примерно через 10 минут падает клиент .. (это нормально я думаю)

я попробовал то же самое приложение с подключением к localhost, оно работает очень хорошо, я оставил приложение открытым в течение очень долгого времени бездействия, а затем попробовал nc.call(), он работал нормально .. но когда я пытаюсь использовать приложение на моем сервере, i была проблема .. Я пробовал оба fms 3.5 и 4.0.3 на моем сервере, но у меня тоже была проблема .. но на localhost это работает, поэтому я думаю, что проблема не в версиях, это что-то другое с подключением к серверу ..

также перцовая вспышка p слой отключен .. и проблема заключается не в свойстве autocloseidleclients в файлах конфигурации server.xml, application.xml vhost.xml. проблема в том, что-то другое с соединением может быть о брандмауэре, TCP, маршрутизатор и т.д .. я не знаю, но я действительно нужна помощь ..

спасибо за чтение ..

ответ

0

Хм, если NetConnection работает с помощью сокетов, то, насколько я знаю, в Windows единственный способ определить, закрыт ли сокет, - попытаться что-то написать; если он терпит неудачу, то он закрыт - значит, call() фактически закрывает соединение после того, как он слишком долго простаивает.

Когда вы закрываете браузер или вызываете nc.close(), это конкретный запрос - обычно на сервере вы также реализуете что-то вроде «если я ничего не получил за X секунд, отключите сокет», что вызовет обратный вызов на стороне клиента.

Я бы использовал своего рода живую; каждые 15/30 секунд, отправьте простой пинг на сервер, который будет держать ваше соединение открытым.