- 前言
- 一、WebSocket是什么?
- 二、使用步骤
- 引入库
- 录入配置
- 服务端
- 注册netty服务端配置
- 注册ws请求处理器
- 客户端
- Java 客户端
- 注册客户端
- 注册客户端配置
- Vue客户端
- 引入vue以及axios
- 相应处理逻辑
- 三、 使用步骤
- 启动类上加上websocket启动注解
- 配置websocket服务器端url地址
- 服务端监听消息处理器
- 客户端发送ws协议数据控制器
- 四、最终效果
- 前端页面
- 服务器端日志
- 借助idea插件市场中的Http Client插件进行模拟请求
- 五、总结
- 六、项目示例源码
前言
本文介绍了整合spring-websocket的步骤,通过基于Vue搭建的客户端通过websocket协议访问服务器端。
提示:以下是本篇文章正文内容,下面案例可供参考
一、WebSocket是什么?是一种基于tcp的web通讯协议、是全双工通讯的,换言之客户端以及服务端可以相互发起通讯
二、使用步骤 引入库录入配置 服务端 注册netty服务端配置org.springframework.boot spring-boot-starter-websocket
@Configuration
@ConfigurationProperties(prefix = "websocket")
@Data
@EnableConfigurationProperties
public class WebSocketProperties {
private String url;
}
注册ws请求处理器
@Configuration
@Import(WebSocketProperties.class)
public class WebSocketConfig{
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
客户端 Java 客户端 注册客户端
@ClientEndpoint
@Slf4j
public class WebSocketClient {
@OnOpen
public void open(Session s) {
log.info("客户端开启了");
}
@OnClose
public void close(CloseReason c) {
log.info("客户端关闭了"+ c.getReasonPhrase());
}
@OnError
public void error(Throwable t) {
log.info("客户端发生错误");
}
@OnMessage
public void message(String message, Session session) {
log.info("客户端获取到服务端的信息:"+ message);
}
}
注册客户端配置
@Configuration
public class WebSocketClientConfig {
@Autowired
WebSocketProperties webSocketProperties;
public Session connect(String userName) throws Exception {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
//设置消息大小最大为10M
container.setDefaultMaxBinaryMessageBufferSize(10 * 1024 * 1024);
container.setDefaultMaxTextMessageBufferSize(10 * 1024 * 1024);
String uri = "ws://" + webSocketProperties.getUrl() + "/" + userName;
return container.connectToServer(WebSocketClient.class, URI.create(uri));
}
public void sendMsg(String msg, String userName) throws Exception {
Session session = connect(userName);
session.getBasicRemote().sendText(msg);
}
}
Vue客户端
引入vue以及axios
相应处理逻辑
hello {{userName}}
客户端接收到的消息:
- {{data}}



