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

websocket client发送数据

SpringBoot学习笔记——websocket_get请求

 

websocket server接收数据

SpringBoot学习笔记——websocket_web服务_02

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

 

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

.antMatchers(
        HttpMethod.GET,
        "/ws/kafka/**"
).permitAll()

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

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

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

 

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

SpringBoot学习笔记——websocket_客户端_03

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

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

参考:socket 及 websocket的握手过程

SpringBoot2.x开发WebSocket