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

河北网站建设电话WordPress搭建邮件服务器

河北网站建设电话,WordPress搭建邮件服务器,公司网站改版,中国新闻社目录 什么是webSocket#xff1f; webSocket可以用来做什么? WebSocket操作类 一#xff1a;测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二#xff1a;测试服务端向客户端推送消息 1.接口代码 2.使…目录 什么是webSocket webSocket可以用来做什么? WebSocket操作类 一测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二测试服务端向客户端推送消息 1.接口代码 2.使用postman进行调用 3.查看测试结果 什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单允许服务端主动向客户端推送数据。而Http请求只能从客户端请求服务端才能得到响应。在WebSocket API中浏览器和服务器只需要完成一次握手两者之间就直接可以创建持久性的连接并进行双向数据传输。 webSocket可以用来做什么? 利用双向数据传输的特点可以用来完成很多功能不需要前端轮询浪费资源。例如 聊天功能、数据实时更新和视频弹幕等 webSocket协议 本协议有两部分握手和数据传输。 握手是基于http协议的。 来自客户端的握手看起来像如下形式 GET ws://localhost/chat HTTP/1.1 Host: localhost Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ Sec-WebSocket-Protocol: chat,superchat Sec-WebSocket-Version: 13 来自服务器的握手看起来像如下形式 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbKxOo Sec-WebSocket-Protocol: chat SpringBoot快速整合WebSocket代码案例 下面我就使用SpringBoot快速整合WebSocket实现服务端与客户端的相互推送消息 代码层级结构 maven依赖 !--WebSocket的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependency WebSocket配置类 package com.example.springboot_websocket_demo01;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; Configuration public class WebSocketConfig {/*** 注入ServerEndpointExporter* 这个bean会自动注册使用了ServerEndpoint注解声明的Websocket endpoint*/Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}} WebSocket操作类 通过该类WebSocket可以进行群推送以及单点推送 package com.example.springboot_websocket_demo01;import jakarta.websocket.*; import jakarta.websocket.server.PathParam; import jakarta.websocket.server.ServerEndpoint; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet;Component Slf4j ServerEndpoint(/websocket/{userId}) // 接口路径 ws://localhost:8087/webSocket/userId; public class WebSocket {//与某个客户端的连接会话需要通过它来给客户端发送数据private Session session;/*** 用户ID*/private String userId;//concurrent包的线程安全Set用来存放每个客户端对应的MyWebSocket对象。//虽然Component默认是单例模式的但springboot还是会为每个websocket连接初始化一个bean所以可以用一个静态set保存起来。// 注底下WebSocket是当前类名private static CopyOnWriteArraySetWebSocket webSockets new CopyOnWriteArraySet();// 用来存在线连接用户信息private static ConcurrentHashMapString, Session sessionPool new ConcurrentHashMapString, Session();/*** 链接成功调用的方法*/OnOpenpublic void onOpen(Session session, PathParam(value userId) String userId) {try {this.session session;this.userId userId;webSockets.add(this);sessionPool.put(userId, session);log.info(【websocket消息】有新的连接总数为: webSockets.size());} catch (Exception e) {}}/*** 链接关闭调用的方法*/OnClosepublic void onClose() {try {webSockets.remove(this);sessionPool.remove(this.userId);log.info(【websocket消息】连接断开总数为: webSockets.size());} catch (Exception e) {}}/*** 收到客户端消息后调用的方法** param message*/OnMessagepublic void onMessage(String message) {log.info(【websocket消息】收到客户端消息: message);}/*** 发送错误时的处理** param session* param error*/OnErrorpublic void onError(Session session, Throwable error) {log.error(用户错误,原因: error.getMessage());error.printStackTrace();}// 此为广播消息public void sendAllMessage(String message) {log.info(【websocket消息】广播消息: message);for (WebSocket webSocket : webSockets) {try {if (webSocket.session.isOpen()) {webSocket.session.getAsyncRemote().sendText(message);}} catch (Exception e) {e.printStackTrace();}}}// 此为单点消息public void sendOneMessage(String userId, String message) {Session session sessionPool.get(userId);if (session ! null session.isOpen()) {try {log.info(【websocket消息】 单点消息: message);session.getAsyncRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}// 此为单点消息(多人)public void sendMoreMessage(String[] userIds, String message) {for (String userId : userIds) {Session session sessionPool.get(userId);if (session ! null session.isOpen()) {try {log.info(【websocket消息】 单点消息: message);session.getAsyncRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}}} 注意WebSocketConfig和WebSocket必须放在同一层级下否则Websocket扫描不到ServerEndpoint注解。 一测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 WebSocket测试 devTest.run 输入 ws://127.0.0.1:8080/websocket/100 进行连接测试是否连接成功 3.进行测试消息推送 4.后端进行查看测试结果 测试成功说明客户端可以使用WebSocket对服务端推送消息。 二测试服务端向客户端推送消息 1.接口代码 package com.example.springboot_websocket_demo01;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/api) public class YourController {Autowiredprivate WebSocket webSocket;PostMapping(/sendNotification)public void sendNotification() {try {// 创建业务消息信息String message postman调用接口访问后端服务器存储数据并使用websocket将消息推送给前端客户端;// 全体发送webSocket.sendAllMessage(message);// 单个用户发送 (userId为用户id)String userId 1;String message1 【websocket消息】 单点消息:只发送给id为userId的用户。;webSocket.sendOneMessage(userId, message1);// 多个用户发送 (userIds为多个用户id逗号‘,’分隔)String[] userIds {1, 2};String message2 【websocket消息】 单点消息:只发送给id为userIds.toString()的用户。;webSocket.sendMoreMessage(userIds, message2);} catch (Exception e) {// 输出异常信息e.printStackTrace();}}}2.使用postman进行调用 用来模仿客户端发送消息到后端服务器然后返回给客户端。其实也可以直接在WebSocket类中的onMessage中直接进行操作调用sendAllMessage等其他方法进行测试 3.查看测试结果 WebSocket测试 devTest.run 正常结果为 还有很多测试方法自己可以去思考以上对于SpringBoot整合WebSocket来说可以算是一个简单的入门案例了。
http://www.hkea.cn/news/14276641/

相关文章:

  • 网站首页自动下拉广告网站建设广找金手指排名贰肆
  • 个人网站创建床上爱做网站
  • 要屏蔽一个网站要怎么做沈阳微信网站
  • 切图做网站如何做电商网站的设计与实现视频教程
  • 我先做个网站怎么做的dedecms网站的下载
  • 一个网站做seo服装公司网站规划建设
  • 最好的购物网站合肥网站建设的公司
  • 深圳做企业网站公司网站改版 请示
  • 广州正规网站建设网站制作咨询
  • 建设银行手机银行网站wordpress网站描述插件
  • 做网站公司松江登烈建站
  • 教育行业网站建设价格在线做静态头像的网站
  • 网站做任务 炸金花做网站之前需要准备什么
  • 怎么让google收录网站电子商务网站建设的步骤
  • 教育网站制作设计招标网站排行榜
  • 网站服务器检测推荐友情链接
  • 免费视图网站建设淘宝联盟怎么做网站推广
  • 18款禁用网站app入口广东建设银行网站
  • 重庆 网站 建设百度公司图片
  • 网站建设功能列表网站建设是什么专业里的科目
  • 杭州做网站一般多少钱免费收录链接网
  • 安康网站制作公司seo基础知识
  • 珠海营销型网站项目推广方案
  • 网站中页面模板设计网站备案接入商是什么
  • 科技厅哪家公司做推广优化好
  • 网站建设的成果怎么写网站建设实验总结
  • 保险网站建设的目标2023一般纳税人企业所得税怎么算
  • 佛山网站建设网站建设收费苏州网站建设营销
  • 做网站设计师能10年赚100万吗电商网站怎样做
  • 个人免费网站建站运营建设银行个人网上银行网站加载