|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
прослушка сокета в цикле
собственно сразу код :
trace("start _child_arrC: "+_child_arrC.length); if(station_type=="income"){ for (var i:Number=0; i < _child_arrC.length; i++) { var json_data:Object = new Object(); json_data.method = "setEndToAction"; json_data.params = {validation_key: v_key,stationId:int(_child_arrC.getItemAt(i).stationId),professionId:int(_child_arrC.getItemAt(i).professionId),userId:int(_child_arrC.getItemAt(i).UID),amount:int(_child_arrC.getItemAt(i).amount)}; trace(JSONN.encode(json_data)); socket.writeUTFBytes(JSONN.encode(json_data)); socket.flush(); } _child_arrC.removeAll(); trace("end _child_arrC: "+_child_arrC.length); } На деле выходит так что я со скоростью автомата на сервер даю три запроса и когда цикл отработал свое сервер мне дает ответ только на самый первый запрос остальные игноряться. в идеале конечно было бы еще как-то реализовать если сервер не отвечает то повторить ему еще раз запрос, ну это уже только бонус к основному вопросу) он не сильно важен сейчас ) |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
как ?)
а вообще я так понял вопрос актуальный я много видел вопросов в инете подобных без ответов... |
|
|||||
Цитата:
Цитата:
|
|
|||||
Отправлять сообщение, ждать ProgressEvent.SOCKET_DATA после отправлять следующее - это если важна очередность отправки. Можно таким образом организовать стек сообщений, можно каждому сообщению добавить UID, для проверки ответа от сервера. Кода приема сообщений нету(также как и кода сервера, отвечающего за их отправку), потому сложно сказать почему клиент получает только одно сообщение. Что касается проверки "сервер не отвечает" - после зкарытия серверного сокета Flash вызовет событие Event.CLOSE у сокета, то же справедливо и для обрыва соединения на стороне клиента. Конечно, никто не мешает пинговать клиентов с определенным интервалом, и проверять время пинга на клиенте - если больше определенного - закрывать подключение и уведомлять об ошибке. Все остальное, что не касается разрыва соединения(падение сервера вследствие утечек памяти, ошибки в логике обработки сообщений, и т.п.) относится к багам, IMHO, и это нужно чинить в коде, а не городить вокруг костыли.
|
|
|||||
Регистрация: Jan 2011
Сообщений: 200
|
Цитата:
если сервер не успевает что-то там обработать, то нужно там стек организовывать. или менять серверный движок |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Проблема была решена другим путем, ну все равно каждого по отдельности.
Цитата:
|
|
|||||
listener
|
Типа вот так, не?
if(station_type=="income"){ var json_data:Object = new Object(); json_data.method = "setEndToActionForChilds";// метод, принимающий массив объектов var params:Array = new Array();//собственно, сам массив for (var i:Number=0; i < _child_arrC.length; i++) { params.push({validation_key:v_key,stationId:int(_child_arrC.getItemAt(i).stationId),professionId:int(_child_arrC.getItemAt(i).professionId),userId:int(_child_arrC.getItemAt(i).UID),amount:int(_child_arrC.getItemAt(i).amount)}); } json_data.params = params; socket.writeUTFBytes(JSONN.encode(json_data)); socket.flush(); _child_arrC.removeAll(); } |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
|
Часовой пояс GMT +4, время: 16:26. |
|
« Предыдущая тема | Следующая тема » |
|
|