当前位置: 首页> 科技> 能源 > 中国建设银行官网网址是多少_商标logo在线生成_湖南网站定制_凡科建站官网入口

中国建设银行官网网址是多少_商标logo在线生成_湖南网站定制_凡科建站官网入口

时间:2025/7/9 16:45:29来源:https://blog.csdn.net/cq_run/article/details/142983069 浏览次数:2次
中国建设银行官网网址是多少_商标logo在线生成_湖南网站定制_凡科建站官网入口

一.什么是websocket?

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。

二.添加依赖

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>3.3.4</version></dependency>

 三.启用Springboot对WebSocket的支持

package com.guide.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/*** @author cxy* @create 2024-10-16 14:53:34* @Description: 开启WebSocket支持*/
@Configuration
public class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
}

四.核心配置:WebSocketServer

因为WebSocket是类似客户端服务端的形式(采用ws协议),那么这里的WebSocketServer其实就相当于一个ws协议的Controller

  • @ ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端, 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端

  • 新建一个ConcurrentHashMap webSocketMap 用于接收当前userId的WebSocket,方便传递之间对userId进行推送消息

package com.guide.websocket;import jakarta.websocket.OnClose;
import jakarta.websocket.OnMessage;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.PathParam;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {//存放会话对象private static final Map<String, Session> sessionMap = new HashMap<>();/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session, @PathParam("sid") String sid) {//System.out.println("客户端:" + sid + "建立连接");sessionMap.put(sid, session);}/*** 收到客户端消息后调用的方法** @param message 客户端发送过来的消息*/@OnMessagepublic void onMessage(String message, @PathParam("sid") String sid) {//System.out.println("收到来自客户端:" + sid + "的信息:" + message);}/*** 连接关闭调用的方法*/@OnClosepublic void onClose(@PathParam("sid") String sid) {//System.out.println("连接断开:" + sid);sessionMap.remove(sid);}/*** 群发*/public void sendToAllClient(String message) {//保存与客户端建立的连接信息  用于主动向客户端发送用Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {//e.printStackTrace();}}}
}

五.测试Controller

package com.guide.controller;import com.guide.websocket.WebSocketServer;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;/*** @author cxy* @create 2024-10-16 14:56:29*/@Tag(name = "WebSocketController")
@RequestMapping("/webSocket")
@RestController
@CrossOrigin(origins = "*")
@Slf4j
@RequiredArgsConstructor
public class WebSocketController {private final WebSocketServer webSocketServer;@PostMapping("/socket")public Map pushToWeb(String message) {Map<String, Object> result = new HashMap<>();webSocketServer.sendToAllClient("111");result.put("msg", message);return result;}
}

 六.测试页面index.html

function websocket() {var ws = new WebSocket("ws://localhost:8070/ws/100");ws.onmessage = (e) => {console.log("连接成功");console.log(e);};// // 当WebSocket连接打开时触发// ws.onopen = function (event: any) {//   console.log('Connection opened');//   // 可以选择在这里发送一些数据到服务器//   ws.send('Hello, server!');// };// ws.onclose = () => {//   setInterval(() => {//     websocket();//   }, 5000)// };// ws.onerror = () => {//   setInterval(() => {//     websocket();//   }, 5000)// }
}
websocket();

关键字:中国建设银行官网网址是多少_商标logo在线生成_湖南网站定制_凡科建站官网入口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: