当前位置: 首页 > news >正文

网站搭建有免费的吗茂名网站建设维护

网站搭建有免费的吗,茂名网站建设维护,建设信用卡在网站挂失块吗,网站建设优化培训班说明#xff1a;本文介绍如何在Spirng Boot中整合WebSocket#xff0c;WebSocket介绍#xff0c;参考下面这篇文章#xff1a; WebSocket 原始方式 原始方式#xff0c;指的是使用Spring Boot自己整合的方式#xff0c;导入的是下面这个依赖 dependencyg…说明本文介绍如何在Spirng Boot中整合WebSocketWebSocket介绍参考下面这篇文章 WebSocket 原始方式 原始方式指的是使用Spring Boot自己整合的方式导入的是下面这个依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId /dependencyStep1创建WebSocket类 创建一个WebSocket服务类如下 import org.springframework.stereotype.Component; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.util.Collection; import java.util.HashMap; import java.util.Map;/*** WebSocket服务*/ Component ServerEndpoint(/ws/{sid}) public class WebSocketServer {// 存放会话对象private static MapString, 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);}/*** 连接关闭调用的方法** param sid*/OnClosepublic void onClose(PathParam(sid) String sid) {System.out.println(连接断开: sid);sessionMap.remove(sid);}/*** 群发** param message*/public void sendToAllClient(String message) {CollectionSession sessions sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}} }Step2注入IOC中 将WebSocketServer注入到IOC容器中如下 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter;/*** WebSocket配置类用于注册WebSocket的Bean*/ Configuration public class WebSocketConfiguration {Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();} }Step3创建任务 如下创建一个服务器主动推送给客户端的任务每5秒推送消息给客户端 在这里插入代码片import com.hezy.websocket.WebSocketServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;Component public class WebSocketTask {Autowiredprivate WebSocketServer webSocketServer;/*** 通过WebSocket每隔5秒向客户端发送消息*/Scheduled(cron 0/5 * * * * ?)public void sendMessageToClient() {webSocketServer.sendToAllClient(这是来自服务端的消息 DateTimeFormatter.ofPattern(HH:mm:ss).format(LocalDateTime.now()));} }Step4启动类增加注解 启动类需要增加EnableWebSocket注解EnableScheduling注解是开启定时任务的配合定时器注解Scheduled(cron 0/5 * * * * ?) import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.socket.config.annotation.EnableWebSocket;/*** author hezhongying* create 2024/7/27 14:05*/ SpringBootApplication EnableScheduling EnableWebSocket public class Start {public static void main(String[] args) {SpringApplication.run(Start.class, args);} }Step5启动测试 启动使用Apifox测试选择新建WebSocket接口 填上地址端口号是8080这一点和后面使用第三方框架不同 连接成功可以看到代码中的消息定时推送到客户端 以上就是使用Spring Boot原始的方式整合WebSocket 使用第三方框架 使用第三方框架GitHub地址netty-websocket-spring-boot-starter的方式整合WebSocket非常容易如下 Step1引入依赖 在pom.xml文件中引入下面依赖 dependencygroupIdorg.yeauty/groupIdartifactIdnetty-websocket-spring-boot-starter/artifactIdversion0.12.0/version /dependencyStep2创建WebSocket类 在GitHub上把类拷贝过来如下 import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.timeout.IdleStateEvent; import org.springframework.util.MultiValueMap; import org.yeauty.annotation.*; import org.yeauty.pojo.Session;import java.io.IOException; import java.util.Map;ServerEndpoint(host ${ws.host}, port ${ws.port}, path /ws) public class MyWebSocket {BeforeHandshakepublic void handshake(Session session, HttpHeaders headers, RequestParam String req, RequestParam MultiValueMap reqMap, PathVariable String arg, PathVariable Map pathMap){session.setSubprotocols(stomp);if (!ok.equals(req)){System.out.println(Authentication failed!);session.close();}}OnOpenpublic void onOpen(Session session, HttpHeaders headers, RequestParam String req, RequestParam MultiValueMap reqMap, PathVariable String arg, PathVariable Map pathMap){System.out.println(new connection);System.out.println(req);}OnClosepublic void onClose(Session session) throws IOException {System.out.println(one connection closed); }OnErrorpublic void onError(Session session, Throwable throwable) {throwable.printStackTrace();}OnMessagepublic void onMessage(Session session, String message) {System.out.println(message);session.sendText(Hello Netty!);}OnBinarypublic void onBinary(Session session, byte[] bytes) {for (byte b : bytes) {System.out.println(b);}session.sendBinary(bytes); }OnEventpublic void onEvent(Session session, Object evt) {if (evt instanceof IdleStateEvent) {IdleStateEvent idleStateEvent (IdleStateEvent) evt;switch (idleStateEvent.state()) {case READER_IDLE:System.out.println(read idle);break;case WRITER_IDLE:System.out.println(write idle);break;case ALL_IDLE:System.out.println(all idle);break;default:break;}}} }Step3增加配置 在配置文件中新增以下配置表示websocket接收的主机和端口如下 # websocket配置 ws:host: 0.0.0.0port: 90Step4启动测试 启动项目使用apifox测试 填上websocket服务地址和端口记得加上一个参数reqok因为我们上面代码里有个判断 连接成功 Message里面写需要发送的内容发送 可以看到发送到消息成功同时也接收到了服务端传递过来的消息就是说此时如果代码里需要发送消息给客户端就可以主动发送消息过来可以基于上面的代码写自己的业务逻辑。 另外 其中相关注解可以查看GitHub中的文档我也在摸索中 总结 本文介绍了Spring Boot使用WebSocket的两种方式
http://www.hkea.cn/news/14407854/

相关文章:

  • 新闻类的网站如何做优化平面设计公司平面图
  • 备案个人网站网站设计特色
  • 腾讯网站建设推广宁波市建设网
  • 注册服务器网站哪个好雅安建设局网站
  • 成都建设网站 scgckj网站建设个人网站
  • 做网站对象存储网站制作com
  • 网站开发汇报pc微信二维码永久入口
  • 做旅游网站公司自问自答网站怎么做
  • 专门做海产品的网站企业形象设计报价
  • CP网站开发制作H5找工程包工平台
  • 建小网站多少钱视频信号无线传输设备
  • 网站开发的代码合肥网站建设王道下拉強
  • 企业网站建设技网站升级建设费用吗
  • 赤峰网站制作公司铜仁建设厅官方网站
  • 做教育行业营销类型的网站免费发帖平台
  • 网站一般用什么语言写访问网站的过程
  • 网站建设可信赖北京朝阳区一小区现疑似病例
  • 24小时24元网站建设运维网站制作
  • 张掖专业做网站的公司建设行官方网站
  • 家教辅导培训网站建设万网域名注册官网gname
  • 爱站网综合查询网站建设推广者怎样找到客户
  • 肇东网站建设wordpress用ip访问不了
  • 宁波手机网站开发trellis wordpress
  • 网站制作哪家最好个人网站费用
  • 陕西建设执业中心网站专业做网站建设公司怎么样
  • 网站托管服务 重庆设计一个网页要多少钱
  • 营销导向的企业网站建设步骤php 手机网站源码
  • 周村网站建设苍溪县建设局网站
  • 凡科建站代理登录怀宁县住房与城乡建设局网站
  • 济宁网站开发平台品牌推广活动方案