WebSocket系列之二进制数据设计与传输

本文作为WebSocket系列的第四篇,通过一个IM聊天应用实例,阐述如何设计二进制协议,详细讲解WebSocket如何发送和处理二进制数据,包括协议设计、消息构造、发送与接收解析等,帮助读者掌握WebSocket二进制数据传输的核心技术。
摘要由CSDN通过智能技术生成

概述

通过前三篇博客,我们能够了解在通过WebSocket发送数据之前,我们需要传递的数据是如何变成ArrayBuffer二进制数据的;在我们收到二进制数据之后,我们又如何将其变成了JavaScript中的常见数据类型。
本文作为WebSocket系列的第四篇内容,将会用一个简单的IM聊天应用把整个WebSocket传输二进制数据类型的内容连接起来,让用户对整个WebSocket传输二进制数据的方法有个了解。
本文的主要内容如下:

  • 如何设计一个二进制协议
  • WebSocket如何发送二进制数据
  • WebSocket如何处理接收的二进制数据

之前的博客我们介绍过了WebSocket基础知识,数字类型和字符串类型与二进制数据间的转换,如果没有相关的基础,建议先依次阅读以下文章:

如何设计一个二进制协议

什么是协议

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等
WebSocket 协议可以传输二进制数据和文本数据。在处理二进制数据时,我们需要使用 BinaryWebSocketHandler 类来处理二进制数据。 具体步骤如下: 1. 创建 BinaryWebSocketHandler 类并重写 handleBinaryMessage 方法来处理二进制数据。 ```java public class MyBinaryWebSocketHandler extends BinaryWebSocketHandler { @Override public void handleBinaryMessage(WebSocketSession session, BinaryMessage message) { // 处理二进制消息 } } ``` 2. 修改 WebSocketConfig 类中注册 WebSocket 处理器的方法,将处理器修改为 BinaryWebSocketHandler 类型,并指定 WebSocket 路径。 ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(binaryWebSocketHandler(), "/ws").setAllowedOrigins("*"); } @Bean public WebSocketHandler binaryWebSocketHandler() { return new MyBinaryWebSocketHandler(); } } ``` 3. 在前端页面中使用 WebSocket 发送二进制数据。 ```javascript var socket = new WebSocket("ws://localhost:8080/ws"); socket.binaryType = "arraybuffer"; socket.onopen = function() { // 连接成功 }; socket.onmessage = function(event) { var data = new Uint8Array(event.data); // 处理二进制消息 }; socket.onclose = function() { // 连接关闭 }; var data = new Uint8Array([1, 2, 3, 4]); socket.send(data.buffer); ``` 在前端页面中,我们需要通过设置 socket.binaryType = "arraybuffer" 来告诉 WebSocket 接收二进制数据。在接收到二进制数据时,我们需要将 event.data 转换为 Uint8Array 类型来处理二进制数据。 注意:在发送二进制数据时,需要通过 data.buffer 来获取 ArrayBuffer 类型的数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值