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

现在做网站一般做多宽做公司网站阿里

现在做网站一般做多宽,做公司网站阿里,抖音小程序源码,网站怎么做seo优化啊一、WebSocket介绍#xff1a; WebSocket是一种在单个TCP连接上进行全双工通信的协议#xff0c;旨在改进客户端和服务器之间的实时通信。以下是关于WebSocket的详细介绍#xff1a; 1、定义与标准 WebSocket是独立的、创建在TCP上的协议#xff0c;通过HTTP/1.1协议的10…一、WebSocket介绍 WebSocket是一种在单个TCP连接上进行全双工通信的协议旨在改进客户端和服务器之间的实时通信。以下是关于WebSocket的详细介绍 1、定义与标准 WebSocket是独立的、创建在TCP上的协议通过HTTP/1.1协议的101状态码进行握手。WebSocket通信协议于2011年被IETF定为标准RFC 6455并由RFC7936补充规范。WebSocket API也被W3C定为标准。 2、工作原理 WebSocket使得客户端和服务器之间的数据交换变得更加简单允许服务端主动向客户端推送数据。在WebSocket API中浏览器和服务器只需要完成一次握手两者之间就直接可以创建持久性的连接并进行双向数据传输。 3、特点 实时性由于协议是全双工的服务器可以随时主动给客户端下发数据相对于HTTP请求需要等待客户端发起请求服务端才能响应延迟明显更少。较少的控制开销在连接创建后服务器和客户端之间交换数据时用于协议控制的数据包头部相对较小。在不包含扩展的情况下对于服务器到客户端的内容此头部大小只有2至10字节和数据包长度有关对于客户端到服务器的内容此头部还需要加上额外的4字节的掩码。保持连接状态与HTTP不同的是Websocket需要先创建连接这就使得其成为一种有状态的协议之后通信时可以省略部分状态信息。更好的二进制支持Websocket定义了二进制帧相对HTTP可以更轻松地处理二进制内容。跨域支持WebSocket协议可以跨域使用允许不同源的客户端与服务器进行通信。 4、用途 WebSocket特别适合需要连续数据交换的服务如网络游戏、实时交易系统、在线聊天应用、实时协作编辑、实时数据展示、在线游戏、实时地图应用、在线投票系统、实时监控系统以及实时消息推送等。 5、帧结构 WebSocket的通信以帧为单位进行帧的结构包括RSV1、RSV2、RSV3默认为0仅当使用extension扩展时有扩展决定其值、opcode帧的类型、FIN表示消息的结尾以及消息长度等内容。 二、WebSocket后端配置 step1首先是依赖下载 下面是一般项目的常用依赖 dependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion2.0.25/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.14.0/version/dependencydependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion4.3.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencydependencygroupIdorg.dom4j/groupIdartifactIddom4j/artifactIdversion2.1.3/version/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.10/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web-services/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion3.0.3/version/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter-test/artifactIdversion3.0.3/versionscopetest/scope/dependencydependencygroupIdorg.assertj/groupIdartifactIdassertj-core/artifactId/dependency/dependencies step2然后是定义配置类 GetHttpSession package com.example.cqcrhouduan.config;import jakarta.servlet.http.HttpSession; import jakarta.websocket.HandshakeResponse; import jakarta.websocket.server.HandshakeRequest; import jakarta.websocket.server.ServerEndpointConfig;public class GetHttpSession extends ServerEndpointConfig.Configurator {Overridepublic void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response){// 获取httpSession对象HttpSession httpSession (HttpSession) request.getHttpSession();// 将httpSession保存起来sec.getUserProperties().put(HttpSession.class.getName(),httpSession);} }WebsocketConfig package com.example.cqcrhouduan.config;import jakarta.websocket.server.ServerEndpoint; 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();} }step3然后是定义相关工具和信息类 Message package com.example.cqcrhouduan.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Message {private String toName;private String message; }MessageUtil: package com.example.cqcrhouduan.pojo;import com.alibaba.fastjson.JSON;public class MessageUtil {public static String getMessage(boolean isSystemMessage,String fromName,Object message){ResultMessage result new ResultMessage();result.setSystem(isSystemMessage);result.setMessage(message);if(fromName ! null){result.setFormName(fromName);}return JSON.toJSONString(result);} }ChatEndPoint package com.example.cqcrhouduan.pojo;import com.alibaba.fastjson.JSON; import com.example.cqcrhouduan.config.GetHttpSession; import jakarta.servlet.http.HttpSession; import jakarta.websocket.*; import jakarta.websocket.server.ServerEndpoint; import org.springframework.stereotype.Component;import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap;ServerEndpoint(value /chat,configurator GetHttpSession.class) Component public class ChatEndPoint {private static final MapString,Session onlineUser new ConcurrentHashMap();private HttpSession httpSession;OnOpenpublic void onOpen(Session session, EndpointConfig config){this.httpSession (HttpSession) config.getUserProperties().get(HttpSession.class.getName());String user (String) this.httpSession.getAttribute(user);// 1、将session进行保存onlineUser.put(user,session);// 2、广播消息将所有登录的用户推送给所有的用户String message MessageUtil.getMessage(true,null,getFriends());broadcastAllUser(message);}private void broadcastAllUser(String Message){try{// 遍历map集合SetMap.EntryString,Session entries onlineUser.entrySet();for(Map.EntryString,Session entry : entries){// 获取所有用户对应的session对象Session session entry.getValue();session.getBasicRemote().sendText(Message);}}catch (Exception e){// 记录日志等等}}public Set getFriends(){SetString set onlineUser.keySet();return set;}OnMessagepublic void opMessage(String message){try{// 将消息推送给指定的用户Message msg JSON.parseObject(message,Message.class);//获取 消息接收方的名称String toNmae msg.getToName();String mes msg.getMessage();Session session onlineUser.get(toNmae);String user (String) this.httpSession.getAttribute(user);String mess MessageUtil.getMessage(false,user,mes);session.getBasicRemote().sendText(mess);}catch (Exception e){// log}}OnClosepublic void onClose(Session session){String user (String) this.httpSession.getAttribute(user);// 1.从onlinesUser中剔除当前用户onlineUser.remove(user);// 2.通知其它所有的用户String message MessageUtil.getMessage(true,null,getFriends());broadcastAllUser(message);} }ResultMessage package com.example.cqcrhouduan.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class ResultMessage {private boolean System;private String formName;private Object Message; }至此关于Socket利用session来获取信息的后端类的配置就全部完成了后面将会继续提供前端的配置方法。(︶)
http://www.w-s-a.com/news/769443/

相关文章:

  • 嘉定专业网站制作公司七星彩网站开发
  • 网站建设人员培训企业网站开发模型图
  • 自己开发一个网站应该怎么做国外设计网站 绿色的
  • 南昌外贸网站设计推广任务发布平台app
  • 建立网站成本书店网站建设可行性分析
  • 高端网站设计官网乌海学校网站建设
  • 哪些网站适合新手编程做项目优秀网页设计赏析
  • 永州网站seo德阳网站建设优化
  • 网站建设高端网站本地建设网站软件下载
  • 网站后台账号密码破解杭州酒店网站设计公司推荐
  • 和县网站开发秦皇岛建设工程信息网站
  • 国外网站用什么dns好建一个下载网站要什么cms系统
  • 礼品工艺品网站建设手机做网站哪家好
  • 泉州网站建设方案维护怎样选择网站建设
  • 江苏建站速度忿先进的网站建设
  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3