购物网站建设好处,网站建设验收方式,安徽政务服务网,网站的宣传推广方式目录 一、概述二、Websocket API1、引入相关依赖2、配置WebSocket处理器3、WebSocket配置4、测试 三、总结 一、概述
在上一节 WebSocket的那些事#xff08;1-概念篇#xff09;中我们简单的介绍了关于WebSocket协议的相关概念、与HTTP的联系区别等等。
这一节将会带来Web… 目录 一、概述二、Websocket API1、引入相关依赖2、配置WebSocket处理器3、WebSocket配置4、测试 三、总结 一、概述
在上一节 WebSocket的那些事1-概念篇中我们简单的介绍了关于WebSocket协议的相关概念、与HTTP的联系区别等等。
这一节将会带来WebSocket的实操环节主要包括Spring本身提供的WebSocket API以及对STOMP协议的支持。 二、Websocket API
1、引入相关依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId
/dependency2、配置WebSocket处理器
这里我们创建了简单的EchoWebsocketHandler 会原封不动返回来自客户端的消息。
Slf4j
public class EchoWebsocketHandler extends TextWebSocketHandler {Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {String content new String(message.asBytes(), StandardCharsets.UTF_8);log.info(WebSocket message received: {}, content);session.sendMessage(message);}Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {log.info(Connection established, request uri:{}, session.getUri());}Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {log.info(Connection closed, request uri:{}, session.getUri());}
}3、WebSocket配置
Configuration
EnableWebSocket
public class WebsocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// HttpSessionHandshakeInterceptor可以将HttpSession中的属性转换为WebsocketSession的属性registry.addHandler(new EchoWebsocketHandler(), /echo).addInterceptors(new HttpSessionHandshakeInterceptor());}Beanpublic ServletServerContainerFactoryBean createWebSocketContainer() {ServletServerContainerFactoryBean container new ServletServerContainerFactoryBean();// 指定单次最大可传输的文本消息大小为4 * 1024字符container.setMaxTextMessageBufferSize(4 * 1024);// 指定单次最大可传输的二进制消息大小为8 * 1024字节container.setMaxBinaryMessageBufferSize(8 * 1024);return container;}
}4、测试
直接启动项目打开Postman输入 ws://localhost:8080/echo 如下 点击连接后显示连接成功直接发送消息即可。可以看到客户端发什么服务端就响应什么。 三、总结
使用原生Websocket会有一些缺点我们总结一下
兼容性问题Websocket是HTML5标准中新增的技术并不是所有浏览器都支持该技术。连接维持问题WebSocket连接是一直保持开放状态的因此会占用一定的带宽和资源。如果连接数量过多或者连接持续时间过长可能会对服务器造成一定的压力。安全问题WebSocket连接的开放性可能会引起一些安全问题例如未经授权的用户访问WebSocket服务、数据被劫持等。服务端实现问题由于消息内容并没有传输标准无法对消息进行路由和处理。
下篇文章我们将会结合SockJS和STOMP来实现WebSocket消息传输。