Websocket 通信に Tyrus プロジェクトを使用して、クライアントからサーバーにカスタム オブジェクトを渡すことは可能ですか。JavaFX を使用してシンプルなデスクトップ アプリケーションを構築したいと考えています。クライアント側で「収集」したデータを渡すにはどうすればよいですか (たとえば、名前と姓のフィールドを持つ Object Person)、そのデータをデータベース (サーバー ロジック上) に保存できますか?
1953 次
2 に答える
0
Pavel Bucekの説明に加えて、サンプルコードはこちら
変換のための Base64
import java.util.Base64;
サーバーエンドポイント
ArrayList listobj=new ArrayList();
listobj.add("data1");
listobj.add("data2");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(listobj);
String str = Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());
session.getBasicRemote().sendText(str);
クライアント(タイラス)
@OnMessage
public void onMessage(Session session, final String message) throws IOException {
try {
byte data[] = Base64.getDecoder().decode(message);
bis = new ByteArrayInputStream(data);
ois = new ObjectInputStream(bis);
ArrayList list= (ArrayList) ois.readObject();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
} catch (Exception e) {
System.out.println("error : " + e.getMessage());
} finally {
if (bis != null) {
bis.close();
}
if (ois != null) {
ois.close();
}
}
}
于 2015-07-14T12:58:06.233 に答える
0
それは可能であり、転送されるデータの形式は完全にあなたの選択です。
WebSocket はテキストまたはバイナリ データを転送できます。それだけです。オブジェクトをObjectStreamにシリアル化し、データをバイナリ ストリームとして送信できます。または、 JAXBを 使用して XML との間でデータをマーシャリングおよびマーシャリングしたり、 JSON 用の JSON-Pを使用したりできます (GSON など、他にも多くの可能性があることに注意してください)。ジャクソン、...)。
もし私があなたの立場なら、JSON は私が使用できるライブラリなら何でも使用するでしょう。このようにして、アプリケーションの範囲を JavaScript クライアントに拡張すると、すべてを (できれば) 再利用できるようになります。
于 2014-10-20T09:43:12.123 に答える