前言
WebSocket学习笔记
WebSocket协议请求头和响应头
升级请求
请求头
1 2 3 4 5 6 7
| GET ws://localhost HTTP/1.1 Host: localhost Connection: Upgrade Upgrade: websocket Sec-WebSocket-Key: xxxxxxxxxxxxxxxxxxxxxx== Sec-WebSocket-Extensions: permessage-deflate Sec-WebSocket-Version: 13
|
响应头
101
:101响应码表示升级协议成功
1 2 3 4 5
| HTTP/1.1 101 Seitching Protocols Connection: Upgrade Upgrade: websocket Sec-WebSocket-Accept: xxxxxxxxxxxxxxxxxxxxxx== Sec-WebSocket-Extensions: permessage-deflate
|
客户端
创建WebSocket对象
<url>
:ws协议的服务端地址(以ws://
开头)
1
| const ws = new WebSocket(<url>);
|
发送数据给服务端
WebSocket对象的事件
连接建立时
接收到数据时
1
| ws.message = function() {}
|
发生错误时
1
| ws.error = function() {}
|
连接关闭时
1
| ws.close = function() {}
|
服务端
面向注解
- 定义一个POJO类
- 通过
@OnMessage
标注的方法处理接收消息
- 通过
session
对象中的getBasicRemote()
方法发送消息
@ServerEndpoint("/")
:指定请求的资源路径
src/main/java/pojo/MsgEndPoint.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| @ServerEndpoint("/") public class MsgEndPoint { private Session session @OnMessage public void onMessage(String message, Session session) throws IOException { System.out.println(message); session.getBasicRemote().sendText(""); } @OnOpen public void onOpen(Session session) { this.session = session; } @OnClose public void onClose(Session session) { } @OnError public void onError(Session session, Throwalbe error) { } }
|
SpringBoot项目整合WebSocket
引入依赖
pom.xml
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
|
完成
参考文献
哔哩哔哩——黑马程序员西安中心