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

网站主页制作教程wordpress瘦身

网站主页制作教程,wordpress瘦身,附近的装修公司电话,一个公司网站多少钱十四、WebSocket WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信,浏览器和服务器只需要完成一次握手, 两者之间就可以创建持久性的连接,并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连…

十四、WebSocket

WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信,浏览器和服务器只需要完成一次握手, 两者之间就可以创建持久性的连接,并进行双向数据传输。

HTTP协议和WebSocket协议对比:

  1. HTTP是短连接,WebSocket是长连接
  2. HTTP通信是单向的,基于请求响应模式,WebSocket支持双向通信
  3. HTTP和WebSocket底层都是TCP连接

应用场景:视频弹幕、网页聊天、体育实况更新、股票基金报价实时更新。

在这里插入图片描述

1、入门案例

实现步骤:

  1. 直接使用websocket.html页面作为WebSocket客户端

    <html>
    <body class="gray-bg"><div class="online"><input  id="text" type="text"><button onclick="send()">发送消息</button><button onclick="closeWebSocket()">关闭连接</button><div id="message"></div> </div><script th:inline="javascript">let websocket = null;let host = document.location.host;let sid=getRandomIntInclusive(0,1000000)function getRandomIntInclusive(min, max) {min = Math.ceil(min);max = Math.floor(max);return Math.floor(Math.random() * (max - min + 1)) + min; // 最小值和最大值都是包含的
    }//判断当前浏览器是否支持WebSocketif ('WebSocket' in window) {//连接WebSocket节点websocket = new WebSocket("ws://localhost:9091/ws/"+sid);} else {alert('浏览器不支持webSocket');}//连接发生错误的回调方法websocket.onerror = function () {setMessageInnerHTML("连接失败");};//连接成功建立的回调方法websocket.onopen = function (event) {setMessageInnerHTML("连接成功");};//接收到消息的回调方法websocket.onmessage = function (event) {let data = event.data;console.log("后端传递的数据:" + data);//将后端传递的数据渲染至页面setMessageInnerHTML(data)};//连接关闭的回调方法websocket.onclose = function () {setMessageInnerHTML("已关闭");};//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。window.onbeforeunload = function () {websocket.close();};//将消息显示在网页上function setMessageInnerHTML(innerHTML) {document.getElementById('message').innerHTML+=innerHTML+'<br/>'};//手动关闭连接function closeWebSocket() {websocket.close();};//发送消息function send() {let message = document.getElementById('text').value;websocket.send(message);setMessageInnerHTML("已向服务器发送内容:"+message+)};</script></body>
    </html>
    
  2. 导入WebSocket的maven坐标

    <!-- SpringBoot Websocket -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>
    
  3. 导入WebSocket服务端组件WebSocketServer, 用于和客户端通信

    //主要是将目前的类定义成一个websocket服务器端(就像Controller层), 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
    @ServerEndpoint("/ws/{sid}")
    @Component
    @Slf4j
    public class WebSocketService {/*** 用来存放所有的webSocket连接*/private static Map<String,Session> sessionMap=new HashMap<>();/*** 连接建立成功调用的方法** @param session 会话*/@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) {log.info("窗口:" + sid + "关闭了连接");sessionMap.remove(sid);  // 移除连接池中的连接}/*** 自定义消息推送、可群发** @param message 消息*/public static void sendAllClient(String message)  {System.out.println("推送消息到窗口,推送内容:" + message);// 遍历所有连接(获取到Map的全部vaue值,进行遍历)for (Session item : sessionMap.values()) {try {item.getBasicRemote().sendText(message);  // 发送消息}catch (Exception e){e.printStackTrace();}}}
    }
    
  4. 导入配置类WebSocketConfiguration, 注册WebSocket的服务端组件

    @Configuration
    public class WebSocketConfig {/*** 这个bean的注册,用于扫描带有@ServerEndpoint的注解成为websocket  ,如果你使用外置的tomcat就不需要该配置文件*/@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
    }
    
  5. 导入定时任务类WebSocketTask, 定时向客户端推送数据

    @Component
    public class WebSocketTask {//将WebSocketService注入到WebSocketTask中@Autowiredprivate WebSocketService webSocketService;/*** 每5秒执行一次*/@Scheduled(cron = "0/5 * * * * ? ")public void webSocketService(){webSocketService.sendAllInfo("服务器定时推送消息: "+LocalDateTime.now());}
    }
    
http://www.yayakq.cn/news/525364/

相关文章:

  • 企业展示类网站模板好的网站怎么设计师
  • 网站个人备案和企业备案2003配置网站与2008的区别
  • 做网站是否需要自购服务器wordpress用户自动禁止登录
  • 安溪网站建设樱桃企业网站管理系统
  • 网站标题作弊自己做网站内容读取太慢
  • 网站推广计划怎么做怎么下载1688上的视频
  • 绍兴网站建设费用息壤网站打不开了
  • 做民宿需要和多家网站合作吗网站服务对生活的影响
  • 建德市建设局网站兖州那有做网站的
  • 大学两学一做专题网站企业网站推广哪家好
  • 网站网站开发教程国内有做外汇的正规网站吗
  • 网站标题符号的应用网站服务
  • 如何制作网站站点如何用excel做网站
  • 滁州 来安县建设局网站嘉兴网红桥
  • 速效成交型网站网站设计师是什么部门
  • 注册网站多少钱一年做电商网站报价
  • 哪些企业需要做网站外语人才网
  • 车陂手机网站开发jsq项目做网站
  • 服装网站建设的需求网站建设计划方案模板
  • 化妆品网站建设的策划网站建设公司电话咨询
  • 公司网站怎么更新产品设计思路万能模板
  • 做网站的编程语言组合网站建设进度及实施过程
  • 网站结构怎么做适合优化十二冶金建设集团有限公司网站
  • 商城网站验收标准手机网站 宽度
  • 企业网站推广案例网站如何设置微信支付功能
  • 网站资料素材怎么做各学院二级网站建设通报
  • 生鲜网站建设规划书样板确定网站界面
  • 本地网站建设的步骤过程网站的元素有哪些
  • 旅行社网站 模板什么是网站建设流程图
  • 大连企业建设网站网站规划说明