java – 通过流进行二进制与字符串传输
作者:互联网
我正在使用WebSockets和Java进行一些实验.显然,根据WebSocket的最后草案,消息可以是二进制或纯字符串.我使用Webbit服务器,它有两个功能:
public void onMessage(WebSocketConnection connection, String message)
public void onMessage(WebSocketConnection connection, byte[] message)
我想知道是什么有所作为. byte []更快吗?或者为什么重要?我可以用字节写出我写的所有内容,因为即使字符串在传输时也被组成字节,那么为什么我们有两个多个方法呢?只有Google Chrome 15 Beta和16 Dev支持二进制传输,因此我考虑在客户端和服务器上使用Base64编码/解码.这是唯一的区别吗?如果我只读取每个字节,将它们组成一个字符串并发送它,该怎么办?我认为,唯一的区别是并非所有字节都是字符串字符,所以我只是在转换为字符串时添加开销?
tl; dr – >二进制传输和字符串传输有什么区别?
解决方法:
WebSocket协议(HyBi)支持两种不同的有效负载类型:文本,二进制.文本有效负载是UTF-8编码的字符串数据.您发送的字符串中任何超过127的ASCII代码都将转换为双字节UTF-8编码.要成功发送/接收原始二进制数据,您可能希望将数据编码为base64(与UTF-8兼容).
二进制有效负载类型直接发送.字节按原样在有效负载中发送.这样带宽效率更高.这意味着您不必执行编码/解码步骤.您发送的字节直接发送,您收到的字节可以直接访问,无需解码.
标签:java,websocket,binary,file-transfer,string 来源: https://codeday.me/bug/20190613/1235603.html