Тема: XMLSocket as3+java
Показать сообщение отдельно
Старый 11.11.2013, 12:41
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 14  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Не доводилось использовать XMLSocket, но если он работает по тому же принципу, что и Socket, то использование сервлета в качестве серверного решения не кажется верным. Сервлеты работают по принципу "запрос-ответ", логичнее было бы использовать URLLoader и на сервере - какой-то фреймворк для реализации REST API, построенный на сервлетах(в целях экономии времени, хотя никто не запрещает создать свою реализацию серверного API). Либо использовать ServerSocket на серверной стороне и работать в режиме постоянного подключения, если это требуется спецификой приложения, конечно. Да, в таком случае желательно использовать не XML(порядочное количество избыточных данных), а, скажем, AMF - он понятен Flash-у, и существуют готовые решения на Java для декодировании и сериализации. Например, можно использовать BlazeDS(нужны библиотеки flex-messaging-common.jar и flex-messaging-core.jar). Читаем:
Код:
Amf3Input in = new Amf3Input(SerializationContext.getSerializationContext());
in.setInputStream(clientSocket.getInputStream());
Object message = in.readObject();
Пишем:
Код:
AmfObject message = new AmfObject();
Amf3Output out = new Amf3Output(SerializationContext.getSerializationContext());
out.setOutputStream(clientSocket.getOutputStream());
out.writeObject(message);
out.writeObjectEnd();
out.flush();
В клиенте читаем данные при помощи socket.readObject()...есть еще проблема с буферизацией больших сообщений, но до неё еще добраться нужно, решается чтением в промежуточный ByteArray для буферизации собщений. Ну и еще нужно создать класс-модель для сериализации.