网站做程序需要多久,民和网站建设公司,单页网站域名,小型网站开发语言websocket使用#xff0c;spring boot vite vue3 Websocket是什么WebSocket 服务端构建websocket 服务实现处理器pom文件 客户端仓库地址 Websocket是什么
WebSocket 是一种网络传输协议#xff0c;可在单个 TCP 连接上进行全双工通信#xff0c;位于 OSI 模型的应用层。… websocket使用spring boot vite vue3 Websocket是什么WebSocket 服务端构建websocket 服务实现处理器pom文件 客户端仓库地址 Websocket是什么
WebSocket 是一种网络传输协议可在单个 TCP 连接上进行全双工通信位于 OSI 模型的应用层。WebSocket 协议在 2011 年由 IETF 标准化为 RFC 6455后由 RFC 7936 补充规范。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单允许服务端主动向客户端推送数据。在 WebSocket API 中浏览器和服务器只需要完成一次握手两者之间就可以创建持久性的连接并进行双向数据传输。
WebSocket 服务端
使用 spring boot 添加坐标。
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId
/dependency构建websocket 服务
SpringSocketController 是 websocket 处理类addHandler 是指定处理器、路径setAllowedOrigins 是设置允许的跨域请求源
Configuration
EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(webSocketHandler(), /websocket).setAllowedOrigins(*); }Beanpublic WebSocketHandler webSocketHandler() {return new SpringSocketController();}
}实现处理器
SpringSocketController.java 内容如下 public class SpringSocketController implements WebSocketHandler {// 用于存储所有连接的sessionprivate ListWebSocketSession sessions new CopyOnWriteArrayList();// 建立连接后Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {System.out.println(连接成功);sessions.add(session);}// 收到消息后Overridepublic void handleMessage(WebSocketSession session, WebSocketMessage? message) throws Exception {System.out.println(收到消息 message.getPayload());System.out.println(session);// 判断消息类型if (message.getPayloadLength() 0) {// 发送消息给所有连接的客户端System.out.println(sessions.size());for (WebSocketSession s : sessions) {if (s.isOpen()){s.sendMessage(new TextMessage(服务器收到消息 message.getPayload()));}}}}// 传输错误后Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {System.out.println(传输错误: exception.getMessage());}// 关闭连接后Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {System.out.println(连接关闭);session.close();}// 是否支持部分消息Overridepublic boolean supportsPartialMessages() {return false;}
}
pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.3.0/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.example/groupIdartifactIdpracticeJava/artifactIdversion0.0.1-SNAPSHOT/versionnamepracticeJava/namedescriptionpracticeJava/descriptionpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
客户端
客户端使用的是 vite、 vue3
templatedivwebsocket/divel-button clicksendsend/el-button
/template
script setup
const ws new WebSocket(ws://localhost:8080/websocket);
ws.binaryType arraybuffer;
ws.onopen function () {console.log(WebSocket连接已打开);
};
ws.onmessage function (event) {console.log(收到消息, event.data);
};
ws.onclose function () {console.log(WebSocket连接已关闭);
};
ws.onerror function (error) {console.log(WebSocket发生错误, error);
};
// ws.send(Hello, WebSocket!);const send () {ws.send(Hello, WebSocket!);
}/script仓库地址
https://github.com/Mrceel/java-demo.git