gpt4 book ai didi

javascript - 通过 Sockjs + Spring Websocket + Stomp 发送图像/文件

转载 作者:行者123 更新时间:2023-12-03 13:37:08 25 4
gpt4 key购买 nike

我正在使用 Spring websockets(STOMP 作为子协议(protocol))和 Sockjs 开发一个消息传递应用程序。

我应该提供支持以在消息中发送文件。

根据this ticket , sockjs 不支持二进制数据,但是 STOMP 支持。

我知道我们可以将图像转换为 base64 并通过 stomp 发送,但我认为这不是最佳实践,因为有很多转换和开销。我还必须保存消息,所以要再次将这个 base64 编码文件保存在服务器上,我必须对它们进行解码。

我有几个问题:

1) 是否有通过 sockjs + stomp 发送图像/文件的解决方法或 转换为 Base64 是唯一的方法吗?

2) 可能这是一个非常愚蠢的问题,但根据 this question可以通过 STOMP(不带 sockjs)发送二进制数据。没有 sockjs 支持 fallback 有多难?

谢谢你。

编辑 : 如果使用 base64 是唯一的选择,我宁愿发出 POST 请求来保存带有附件的消息,而不是使用 base64 编码。有什么更好的想法吗?

最佳答案

如果是 base64 编码,任何 Web Socket 实现都将处理二进制数据。这实际上将二进制流序列化为字符串。所有套接字传输和包装器都可以处理字符串数据。任何 Java base64 实现都应该可以工作。

在浏览器方面,base64 在现代浏览器中使用 btoa() 本地处理和 atob() .如果您支持旧版浏览器,您可能需要一个 polyfill。

也就是说,如果 Java 服务器只是代理 Web 用户之间的消息,您不需要在 Java 中解码图像,您只需将字符串编码的图像从一个套接字连接传递到另一个套接字连接。

关于javascript - 通过 Sockjs + Spring Websocket + Stomp 发送图像/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31111528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com