|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
работа Socket'a
Хотелось бы спросить у людей с опытом как лучше всего работать с сокетом?
Более конкретней хотел бы спросить где именно в коде у вас находиться соединения с сокетом, выведено ли это все в отдельные классы для приема\отправки и как вообще приблизительно должно выглядеть? Задался этим вопросом так как уже есть для меня большие проекты где я задумываюсь что соединения с сокетом и все его события я обрабатываю в главном классе, и мне кажется это не совсем верно. Так же хотел спросить правильно ли мой подход на текущий момент в отправке\приема данных по сокету, стоит ли что-то изменить или наоборот оставить как есть? Прием: private function inputSoket(event:ProgressEvent):void { var bA:int=socket.bytesAvailable; // длина trace('Socket: talk with me,and i see '+bA+'- symbols'); var socketBuffer:ByteArray = new ByteArray(); try{ if(socket.bytesAvailable){ socket.readBytes( socketBuffer , socketBuffer.position , socket.bytesAvailable); while (socketBuffer.bytesAvailable) { var byte:int = socketBuffer.readByte(); if (byte==0) { // if we read the end byte trace(msg); // treat your message time_txt = msg; parseJSON(msg); msg = ""; // free the buffer } else { msg += String.fromCharCode(byte); // else, we add the byte to our buffer } } } }catch(e:Error){ var tmp:ByteArray = new ByteArray(); socketBuffer.readBytes( tmp , socketBuffer.position , socketBuffer.bytesAvailable); socketBuffer.clear(); tmp.readBytes( socketBuffer ); tmp.clear(); trace("error"); } } Последний раз редактировалось GrafMine; 23.12.2013 в 15:31. |
|
|||||
[+4 06.05.14]
|
Я работаю так : емеется класс SocketServer extends Socket там расписывается вся работа. Класс имеет метод execute(data) для отправки запроса. Глобальный ( основной ) контроллер приложения подписывается на события от нашего SocketServer - и пишет их куда надо, в модели, или в виды напрямую и т.п. Это из рассчета, если у нас 1 контрол. Если их больше, то каждый из контролов имеет ссылку на Server - где подписывается на свои нужные события. Если описать это по быстрому без полей :
var server:SocketServer = new SocketServer() control1.init(server , ...views, ...models) control2.init(server , ...views, ...models) ... addEventListener(SocketServerEvent.GET_SOME_DATA , doSomthing) Добавлено через 3 минуты По коду, что вы привели - скажу так : плохо. Надо более структурировано описать. Разделить на методы, сделать более чистабельные переменные и т.п. Избавится от трай-катч так же можно.
__________________
Марк Tween |
Часовой пояс GMT +4, время: 22:27. |
|
« Предыдущая тема | Следующая тема » |
|
|