【问题标题】:Tyrus - pass object from client to serverTyrus - 将对象从客户端传递到服务器
【发布时间】:2014-10-19 16:37:14
【问题描述】:

是否可以将自定义对象从客户端传递到服务器,使用 Tyrus 项目进行 websocket 通信。我想使用 JavaFX 构建简单的桌面应用程序。如何传递我在客户端“收集”的数据(例如,具有姓名和姓氏字段的对象人员),以便我可以将该数据保存到数据库(在我的服务器逻辑上)?

【问题讨论】:

    标签: object websocket javafx tyrus


    【解决方案1】:

    这是可能的,传输数据的形式完全由您选择。

    WebSocket 可以传输文本或二进制数据,仅此而已。您可以将您的 obect 序列化为 ObjectStream 并将数据作为二进制流发送,或者您可以使用 JAXB 将数据编组和编组到 XML 或从 XML 或 JSON-P 用于 JSON(请注意,还有很多其他可能性,如 GSON、Jackson 等)。

    如果我处于您的位置,我会将 JSON 与我认为可用的任何库一起使用 - 这样,当您将应用程序范围扩展到 javascript 客户端时,您将能够(希望)重用所有内容。

    【讨论】:

    • 我现在明白了。是否有一些简单的教程,所以我可以在代码中看到它。谢谢。
    • @Sysrq147 嗨,您找到任何代码示例了吗?我也有同样的要求
    • @jerith2 不幸的是没有。 ://
    • @jerith2 我对 Java 编程很陌生。我想帮忙,但不是那么有经验。对不起:(
    • @Sysrq147 我找到了解决方案并发布在下面
    【解决方案2】:

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

    客户(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();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2015-05-10
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多