2

Websocket 通信に Tyrus プロジェクトを使用して、クライアントからサーバーにカスタム オブジェクトを渡すことは可能ですか。JavaFX を使用してシンプルなデスクトップ アプリケーションを構築したいと考えています。クライアント側で「収集」したデータを渡すにはどうすればよいですか (たとえば、名前と姓のフィールドを持つ Object Person)、そのデータをデータベース (サーバー ロジック上) に保存できますか?

4

2 に答える 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 に答える