2014-10-19 136 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(); 
     } 
    } 
} 
相关问题