2014-10-19 50 views
2

它是更多鈔票從客戶端傳遞自定義對象到服務器,用泰魯斯項目的WebSocket通信。我想使用JavaFX構建簡單的桌面應用程序。我如何傳遞我在客戶端「收集」的數據(例如,具有名稱和姓氏字段的Object Person),以便將該數據保存到數據庫(在我的服務器邏輯上)?泰魯斯 - 從客戶端傳遞到目標服務器

回答

0

這是可能的,傳輸的數據形式完全是你的選擇。

的WebSocket可以傳輸文本或二進制數據,僅此而已。您可以系列化你obect到ObjectStream和發送數據的二進制流,或者您可以使用使用JAXB馬歇爾和umarshall數據/從XML或JSON-P爲JSON(注意,有很多其他的可能性,如GSON,傑克遜, ...)。

如果我將是你的位置,我會使用JSON與任何圖書館,我覺得可用 - 這樣,當你將應用範圍擴展到JavaScript客戶端,你就可以重複使用(希望)一切。

+2

我現在伸手不見了。有一些簡單的教程,所以我可以在代碼中看到它。謝謝。 – Sysrq147 2014-10-20 09:50:00

+0

@ Sysrq147嗨,你有沒有找到任何代碼示例?我也有相同的要求 – Jeevanantham 2015-07-14 08:41:30

+0

@ jerith2可惜沒有。 :/ – Sysrq147 2015-07-14 08:43:09

0

除了保爾布切克的說明中,示例代碼是這裏

的Base64轉換

import java.util.Base64; 

Serverendpoint

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); 

客戶端(Tyrus)

@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(); 
     } 
    } 
} 
相關問題