tonglin0325的个人主页

SpringBoot学习笔记——websocket

可以在chrome上安装
 Simple WebSocket Client 插件来辅助调试websocket功能

websocket client发送数据

 

websocket server接收数据

参考:Spring-Boot快速集成WebSocket服务端 客户端(支持客户端消息同步回调)

 

在springboot中使用websocket的时候需要注意如果web服务有权限的话,websockete连接同样是会被拦截,需要开放拦截

1
2
3
4
5
.antMatchers(
HttpMethod.GET,
"/ws/kafka/**"
).permitAll()

如果想在session中获得当前用户认证的信息,可以这样

1
2
UsernamePasswordAuthenticationToken auth = (UsernamePasswordAuthenticationToken) session.getUserPrincipal();

使用 SecurityContextHolder.getContext().getAuthentication() 是不可以的,将会是null

 

websocket发送的是GET请求,WebSocket协议利用了HTTP协议来建立连接。

websocket请求和普通的HTTP请求有几点不同:

1
2
3
4
5
1.GET请求的地址不是类似/path/,而是以ws://开头的地址;
2.请求头Upgrade: websocket和Connection: Upgrade表示这个连接将要被转换为WebSocket连接;
3.Sec-WebSocket-Key是用于标识这个连接,并非用于加密数据;
4.Sec-WebSocket-Version指定了WebSocket的协议版本。

参考:socket 及 websocket的握手过程

SpringBoot2.x开发WebSocket