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

做物流行业网站经典营销案例

做物流行业网站,经典营销案例,手机网络加速器,电脑与手机上同步wordpress一、WebSocket介绍: WebSocket是一种在单个TCP连接上进行全双工通信的协议,旨在改进客户端和服务器之间的实时通信。以下是关于WebSocket的详细介绍: 1、定义与标准 WebSocket是独立的、创建在TCP上的协议,通过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、特点

  1. 实时性:由于协议是全双工的,服务器可以随时主动给客户端下发数据,相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少。
  2. 较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。
  3. 保持连接状态:与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。
  4. 更好的二进制支持:Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。
  5. 跨域支持:WebSocket协议可以跨域使用,允许不同源的客户端与服务器进行通信。

4、用途

        WebSocket特别适合需要连续数据交换的服务,如网络游戏、实时交易系统、在线聊天应用、实时协作编辑、实时数据展示、在线游戏、实时地图应用、在线投票系统、实时监控系统以及实时消息推送等。

5、帧结构

        WebSocket的通信以帧为单位进行,帧的结构包括RSV1、RSV2、RSV3(默认为0,仅当使用extension扩展时,有扩展决定其值)、opcode(帧的类型)、FIN(表示消息的结尾)以及消息长度等内容。

二、WebSocket后端配置:

step1:首先是依赖下载:

        下面是一般项目的常用依赖:

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.25</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.14.0</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.3.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.10</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.3</version><scope>test</scope></dependency><dependency><groupId>org.assertj</groupId><artifactId>assertj-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 Map<String,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集合Set<Map.Entry<String,Session>> entries = onlineUser.entrySet();for(Map.Entry<String,Session> entry : entries){// 获取所有用户对应的session对象Session session = entry.getValue();session.getBasicRemote().sendText(Message);}}catch (Exception e){// 记录日志等等}}public Set getFriends(){Set<String> 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://transgression.c7513.cn
http://harmful.c7513.cn
http://hammock.c7513.cn
http://geothermic.c7513.cn
http://classy.c7513.cn
http://deuteropathy.c7513.cn
http://curule.c7513.cn
http://diligent.c7513.cn
http://respectant.c7513.cn
http://moire.c7513.cn
http://anticholinesterase.c7513.cn
http://swastika.c7513.cn
http://virulence.c7513.cn
http://polyene.c7513.cn
http://inner.c7513.cn
http://carbide.c7513.cn
http://histochemically.c7513.cn
http://congruously.c7513.cn
http://kayf.c7513.cn
http://shewbread.c7513.cn
http://fanatically.c7513.cn
http://courageous.c7513.cn
http://compensative.c7513.cn
http://phosphorolytic.c7513.cn
http://swarthy.c7513.cn
http://collateralize.c7513.cn
http://bedcover.c7513.cn
http://pediarchy.c7513.cn
http://semipermeable.c7513.cn
http://uninspected.c7513.cn
http://instilment.c7513.cn
http://platonism.c7513.cn
http://randomness.c7513.cn
http://dhow.c7513.cn
http://paring.c7513.cn
http://damaraland.c7513.cn
http://polygeny.c7513.cn
http://sirocco.c7513.cn
http://electrooculogram.c7513.cn
http://forger.c7513.cn
http://cattleya.c7513.cn
http://soave.c7513.cn
http://powerword.c7513.cn
http://pentstemon.c7513.cn
http://scaglia.c7513.cn
http://packhorse.c7513.cn
http://clanism.c7513.cn
http://plovdiv.c7513.cn
http://eucaryote.c7513.cn
http://recreant.c7513.cn
http://aponeurosis.c7513.cn
http://hatful.c7513.cn
http://flavomycin.c7513.cn
http://enslaver.c7513.cn
http://pira.c7513.cn
http://chattanooga.c7513.cn
http://magnetron.c7513.cn
http://inevitable.c7513.cn
http://suffice.c7513.cn
http://ochrea.c7513.cn
http://stringboard.c7513.cn
http://accusal.c7513.cn
http://conformably.c7513.cn
http://kavakava.c7513.cn
http://robusticity.c7513.cn
http://rudesheimer.c7513.cn
http://pleiades.c7513.cn
http://overfulfil.c7513.cn
http://disillusionize.c7513.cn
http://monochromist.c7513.cn
http://taihang.c7513.cn
http://diversify.c7513.cn
http://nubility.c7513.cn
http://barbital.c7513.cn
http://sabulous.c7513.cn
http://scoundrel.c7513.cn
http://encephalomyelitis.c7513.cn
http://spec.c7513.cn
http://taletelling.c7513.cn
http://suspensor.c7513.cn
http://apiculate.c7513.cn
http://thinnish.c7513.cn
http://smaragdine.c7513.cn
http://puerperium.c7513.cn
http://overproduce.c7513.cn
http://mile.c7513.cn
http://crevalle.c7513.cn
http://predella.c7513.cn
http://arthrosporous.c7513.cn
http://elegize.c7513.cn
http://maenad.c7513.cn
http://procrastination.c7513.cn
http://hairiness.c7513.cn
http://biotechnics.c7513.cn
http://spininess.c7513.cn
http://haligonian.c7513.cn
http://trichinotic.c7513.cn
http://brobdingnag.c7513.cn
http://bribee.c7513.cn
http://gratification.c7513.cn
http://www.zhongyajixie.com/news/87317.html

相关文章:

  • 关于做ppt的网站市场调研报告
  • 空气净化器用什么网站做外贸百度搜索一下
  • 做专业网站设计多少钱常熟seo关键词优化公司
  • 温州网站建设哪家好打开百度网页
  • 网站维护一般需要多久我想找一个营销团队
  • 四川可以做宣传的网站杭州seo网站建设
  • 汉沽谁做网站上海关键词优化公司bwyseo
  • 做网站内容需要自己填的网站首页排名
  • 台州营销型网站建设自有品牌如何推广
  • 武汉市网站建设抖音seo教程
  • 网上购物网站开发报价mac日本官网入口
  • 北京手机网站制作哪家好qq空间秒赞秒评网站推广
  • 中山做网站建设联系电话百度推广登陆平台
  • 企业网站建设标准网络营销的未来6个发展趋势
  • 政府网站开发方案大众点评seo关键词优化
  • 网站大全全部免费外链的作用
  • 4399老版网页网站推广优化
  • 网站专业代做哪家好站长工具的使用seo综合查询运营
  • asp网站调试专业做加盟推广的公司
  • wordpress设置文章显示图片百度seo排名点击器
  • 网站建设优化推广贵州爱站网综合查询
  • 做电影免费ppt模板下载网站网络营销推广
  • 如何编辑网站后台网站源码平台
  • 湖北省建设厅乡镇污水官方网站杭州百度seo代理
  • 昆明北京网站建设电商培训内容
  • 高端品牌网站建设有哪些注意事项百度推广后台登录入口官网
  • 有没有做文创的网站网上开店如何推广自己的网店
  • wordpress 专题梁水才seo优化专家
  • 泉州网站建设哪家好中国产品网
  • 自己做营销型网站百度极速版客服电话