网站 数据备份简历设计网站

web/2025/10/7 10:48:43/文章来源:
网站 数据备份,简历设计网站,北京软件公司名单,wordpress单栏主题 极简1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 … 1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.heima/groupIdartifactIdws-demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.7.3/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.22/version/dependency!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactIdversion2.7.14/version/dependency/dependencies/project 2.1.2 WsServerEndpoint类 package com.heima;import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; 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.ServerEndpoint; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;/**** 监听websocket地址 /myWs*/ ServerEndpoint(/myWs) Component Slf4j EnableScheduling public class WsServerEndpoint {static MapString,Session map new ConcurrentHashMapString,Session();/**** 连接建立时执行的操作* param session*/OnOpenpublic void onOpen(Session session){map.put(session.getId(),session);log.info(websocket is open);}/**** 收到客户端消息执行的操作* param text*/OnMessagepublic String OnMessage(String text){log.info(收到了一条信息text);return 已收到你的信息 ;}/**** 连接关闭时执行的操作* param session*/OnClosepublic void OnClose(Session session){map.remove(session.getId());log.info(连接关闭时执行的操作);}/**** 向客户端发送信息*/Scheduled(fixedRate 2000)public void sendMsg() throws IOException {for (String key : map.keySet()){map.get(key).getBasicRemote().sendText(你好你好);}} }2.1.3 WebSocketConfig package com.heima;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter;Configuration public class WebSocketConfig {Beanpublic ServerEndpointExporter serverEndpointExporter(){return new ServerEndpointExporter();}}2.1.3 前端测试代码 !DOCTYPE html html langen headmeta charsetUTF-8titlewsClient/title /head bodyscript// 创建websocketlet ws new WebSocket(ws://localhost:8080/myWs)//向服务器发送hellows.onopenfunction (){ws.send(hello)}//监听数据ws://localhost:8080/myWsws.onmessagefunction (message){console.log(message.data)} /script /body /html 2.1.4测试结果 2.1.4.1 当打开浏览器时 2.1.4.2 当关闭浏览器时 2.1.4.3 当刷新浏览器的时候 2.基于spring提供的类和接口刷新websocket服务器端 2.1HttpSessionHandShakeInter 握手拦截器 package com.spring;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;import java.util.Map;/**** 握手拦截器*/ Component Slf4j public class MyWsInterceptor extends HttpSessionHandshakeInterceptor {Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, MapString, Object attributes) throws Exception {log.info(request.getRemoteAddress().toString()开始握手);return super.beforeHandshake(request, response, wsHandler, attributes);}Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) {log.info(request.getRemoteAddress().toString()完成握手);super.afterHandshake(request, response, wsHandler, ex);} }2.2  MyWsHandler 主处理程序 sessionbean封装类 import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.web.socket.WebSocketSession;Data AllArgsConstructor public class SessionBean {private WebSocketSession webSocketSession;private Integer clientId; }主处理程序 package com.spring;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.servlet.server.Session; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.AbstractWebSocketHandler;import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger;/**** webSocket 主处理程序*/ Component Slf4j EnableScheduling public class MyWsHandler extends AbstractWebSocketHandler {//map有并发线程问题 所以用ConcurrentHashMapprivate static MapString, SessionBean map ;//id有并发问题 所以用Integer的安全类型private static AtomicInteger clientIdMaker;static {map new ConcurrentHashMap();clientIdMakernew AtomicInteger(0);}//连接建立Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {super.afterConnectionEstablished(session);//将session 进一步封装 id采用的是自增SessionBean sessionBean new SessionBean(session, clientIdMaker.getAndIncrement());map.put(session.getId(),sessionBean);log.info(map.get(session.getId()).getClientId()建立了连接);}//收到消息Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {super.handleTextMessage(session, message);log.info(map.get(session.getId()).getClientId():message.getPayload());}//传输异常Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {super.handleTransportError(session, exception);if (session.isOpen()){session.close();}map.remove(session.getId());}//连接关闭Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {super.afterConnectionClosed(session, status);log.info(map.get(session.getId()).getClientId()关闭连接);}/**** 向客户端发送信息*/Scheduled(fixedRate 2000)public void sendMsg() throws IOException {for (String key : map.keySet()){map.get(key).getWebSocketSession().sendMessage(new TextMessage(hello, spring socket));}} }2.3 WebSocketConfigurer 注册拦截器和主处理程序以及监听路径 package com.spring;import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;import javax.annotation.Resource;Configuration EnableWebSocket public class MyWsConfig implements WebSocketConfigurer {Resourceprivate MyWsHandler wsHandler;Resourceprivate MyWsInterceptor wsInterceptor;Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(wsHandler,/myWs1).addInterceptors(wsInterceptor).setAllowedOriginPatterns(*);} }2.4 前端测试 !DOCTYPE html html langen headmeta charsetUTF-8titlewsClient/title /head bodyscript// 创建websocketlet ws new WebSocket(ws://localhost:8080/myWs1)//向服务器发送hellows.onopenfunction (){ws.send(hello)}//监听数据ws://localhost:8080/myWsws.onmessagefunction (message){console.log(message.data)} /script /body /html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样建立一个自己的网站如何建设音乐网站

重启您的CentOS系统。 在GRUB引导加载器启动过程中,当看到启动画面时,按下e键进入编辑模式。 找到以 linux16 或 linux 开头的启动行。 在该行的末尾添加 rd.break 或者ro(只读)修改为 rw 加init/sysroot/bin/sh参数&#xff0…

在线电影网站建设凡科网站怎么做外链

ChatGPT在语义理解和信息提取领域有着广泛的应用潜力。语义理解是指对文本进行深层次的理解,包括词义、句义和篇章义等层面的理解。信息提取是指从文本中自动抽取结构化的信息,如实体、关系、事件等。ChatGPT作为一种预训练语言模型,具有丰富…

重庆sem网站推广渭南做网站电话

启动Unity发布的exe并且添加启动参数 在启动Unity的时候添加一些启动的参数。 代码解释 在启动的时候获取的启动参数如果没有获取到正确的启动参数那么就退出程序,这个代码仅仅在发布到windows之后才会生效,在编辑器下这个代码虽然会获取到参数但是不能…

天津河东做网站贵吗关于校园网站的策划书

目录 一、创建Web页面浏览器 1.示例源码 2.生成效果 二、局域网聊天程序 1.类 2.服务器端 3.客户端 一、创建Web页面浏览器 TextBox 控件用来输入要浏览的网页地址,Button控件用来执行浏览网页操作, WebBrowser控件用来显示要浏览的网页。这个控…

南宁市建设处网站分类模板wordpress

Zipkin是一款开源的分布式链路追踪系统,主要功能包括: 1. 采集跟踪数据 - Zipkin client库负责收集并上报各服务的请求信息。 2. 存储跟踪数据 - 存储层默认采用Zipkin自带的基于内存的快速存储,也支持整合MySQL、Cassandra等外部存储。 3. 查询接口 - 提供RESTful API进行跟…

山东建设厅执业资格注册中心网站手机小程序开发教程

这里假设我们的公司名叫果冻(Jelly),我们准备开发一款对标苹果 14 的手机,取名叫 大米14(Rice14)。 接下来我们在源码中添加我们自己的产品(Product) 在 device 目录下添加如下的目…

linux网站服务器搭建电子商务网站建设怎么做

今天这篇文章我们主要讲一下Android系统中的截屏事件处理流程。用过android系统手机的同学应该都知道,一般的android手机按下音量减少键和电源按键就会触发截屏事件(国内定制机做个修改的这里就不做考虑了)。那么这里的截屏事件是如何触发的呢…

做教程网站资源放哪里有展示型网站建设方案书

目录 1.简介 2.Optional类常用方法 3.示例代码 4.示例代码仓库地址 1.简介 Java 8引入了一个重要的新特性,即Optional类。Optional类是为了解决空指针异常而设计的。 在Java中,当我们尝试访问一个空对象的属性或调用其方法时,很容易抛出…

购物网站欢迎页面怎么设计外贸进口流程

文章目录 过期监听准备工作稍微复习下Jedis与JedisPool 模拟延时队列优缺点**优点**:**缺点**: ZSet 实现延时队列引入依赖模拟延时队列优缺点**优点**(跟过期监听一样):**缺点**: Reference Redis实现延时…

建设集团网站上海今天最新发布会

本节主要就是讲述的机器学习的数学基础,提到数学基础,可能一眼就会是满眼的枯燥、没意思,但是成就英雄的路上注定了孤独,要想要真正的在学术上有所突破就必须挨得住寂寞,受得住孤独,才能真正的走进熟悉直到…

站长工具seo综合查询adc舟山市普陀区建设局网站

全球图形学领域教育的领先者、自研引擎的倡导者、底层技术研究领域的技术公开者,东汉书院在致力于使得更多人群具备内核级竞争力的道路上,将带给小伙伴们更多的公开技术教学和视频,感谢一路以来有你的支持。我们正在用实际行动来帮助小伙伴们…

做视频图片博客网站怎样把自己的网站推广出去

一、题目要求: 某学校要设计一个数据库,学校的业务规则概括如下: 学校内班级若干,每个班级内又有学生若干。 学校开设课程若干,只有某些特定的班级能上指定的课程。 学生选修某些课程,但是在自身班级下的课程是必修。 学校定期组织考试,成绩…

用vs做的网站怎么打开吗网站开发有侵权吗

微信小程序实战系列 《微信小程序实战-01翻页时钟-1》《微信小程序实战-02翻页时钟-2》 文章目录 微信小程序实战系列前言动态翻页效果实现clock.wxmlclock.wxssclock.js运行效果 总结 前言 本文继续完成最后一个部分“动态翻页效果”。 动态翻页效果实现 clock.wxml <…

google网站建设wordpress 4.5.2 下载

社区团购业务正在中国迅速崭露头角&#xff0c;而随着行业的快速发展&#xff0c;也带来了一系列挑战&#xff0c;包括供应链管理、物流配送、产品质量和用户体验等问题。本文将探讨这些问题&#xff0c;并提出一些可能的解决方案。 一、问题和挑战 1.1 供应链管理 对于社区团…

如何让自己的网站被搜索引擎收录打广告去哪个平台免费

虽然口令的安全性很值得担忧&#xff0c;但是口令在OpenSSL中是经常使用的&#xff0c;这是没有办法替代的一种简易的保护数据的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密钥的加密和解密&#xff0c;等等。OpenSSL的指令提供了多种灵活的口令输入方法&#xff0c;但…

小语种服务网站定制微信小程序开发价格

作者主页&#xff1a;作者主页 数据结构专栏&#xff1a;数据结构 创作时间 &#xff1a;2024年5月18日 前言&#xff1a; 今天我们就给大家带来几种排序的讲解&#xff0c;包括冒泡排序&#xff0c;插入排序&#xff0c;希尔排序&#xff0c;选择排序&#xff0c;堆排序&…

使用模板怎么建站在线购物网站开发项目

import randomrandom.shuffle(a) # a是一个列表

京东云网站建设深圳南山网站建设工作室

一、静态协议的优缺点&#xff1a; 缺点&#xff1a; 1、中大型网络配置量过大 2、不能基于拓扑的变化而实时的变化 优点&#xff1a; 1、不会额外暂用物理资源 2、安全问题 3、计算路径问题 简单、小型网络建议使用静态路由&#xff1b;中大型较复杂网络&#xff0c;建议使用…

句容建设网站wordpress文章页面菜单

效果图&#xff1a; 各字段设置&#xff1a; 以下是一个使用 AI&#xff08;DeepSeeker&#xff09; 飞书多维表格分解项目待办模板的示例&#xff0c;你可以根据实际情况进行调整和优化&#xff1a; 列表中需要选择对象&#xff0c;且选择输出结果&#xff08;记得控制字符长度…

企业网站php模板下载网站排名软件优化

计算节点的功能&#xff1a; 提供容器运行的环境 kube-proxy的主要功能&#xff1a; 术业有专攻&#xff0c; kube-proxy的主要功能可以概括为4个字 网络规则 那么kube-proxy自己其实是个daemonset控制器跑的 每个节点上都有个的pod 它负责网络规则 其实呢 它还是个小…