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

企业网站禁忌营销引流都有什么方法

企业网站禁忌,营销引流都有什么方法,做网站前端视频,2019怎么做网站赚钱一、websocket的概念 我们应该了解的是websocket是ISO参考模型的应用层的协议之一 它是一种在TCP连接上进行全双工也就是双向通信的协议。有了这个协议,客户端和服务器之间就可以随时互相发送数据,不再像传统HTTP那样一问一答了也就是请求响应。当客户…

一、websocket的概念

我们应该了解的是websocket是ISO参考模型的应用层的协议之一

它是一种在TCP连接上进行全双工也就是双向通信的协议。有了这个协议,客户端和服务器之间就可以随时互相发送数据,不再像传统HTTP那样一问一答了也就是请求响应。当客户端和服务器的连接一旦建立,不手动关闭或者设置自动关闭就会一直保持。

  • 全双工:允许数据在两个方向同时进行传输
  • 半双工:允许数据在两个方向上传输,但是某个时间段内只允许一个方向的传输

二、为什么我们需要WebSocket?

比如我们想要实现网上聊天室或者网上棋类在线对战游戏

HTTP 是“请求-响应”模式: 客户端发起请求,服务器被动响应。

但这种模式有几个问题:

问题举例结果
无法实时比如股票价格变化,用户得不断刷新页面才看到新数据用户体验差
请求多、浪费资源比如每隔500ms轮询一次服务器增加带宽、服务器压力
响应延迟服务端不能主动通知客户端数据总是滞后

轮询

如果我们使用websocket

连接过程如下

同理客户端2的websocket的建立流程也如上图,握手后就“切换”成 WebSocket 协议,不再是 HTTP 请求

基于websocket的网上五子棋对战的大致流程

WebsocketAPI

客户端浏览器API(了解即可)

1.websocket对象创建(javascript)

let was = new WebSocket(URL)

// URL 说明

// 格式 : 协议://ip地址/访问路径

// 协议 : 协议名称为ws 也就是websocket

2.websocket对象相关事件
事件事件处理程序描述
openws.onopen连接建立时触发
messagews.onmessage客户端接收到服务器发送的数据时触发
closews.onclose连接关闭时触发
errorws.onerror连接异常时触发
3.websocket对象提供的方法

ws.send() 通过websocket对象调用该方法发送数据给服务端(前后端连接使用)

<script>let ws = new WebSocket("ws://localhost/chat");ws.onopen = function(){console.log("connect successfully");}ws.onmessage() = function(event){//通过event.data可以获取到服务器发送给客户端的数据console.log("event data:" + event.data);}ws.onerror() = function(){console.log("error connection");}ws.onclose() = function(){console.log("close connection: ");}</script>    

服务端后端API

Java WebSocket 应用程序由一系列的Endpoint组成。Endpoint是一个Java类,代表WebSocket连接的一段,对于服务端,我们可以认为是处理具体WebSocket消息的接口。

我们可以通过两种方式定义Endpoint:

  • 编程式:继承类javax.websocket.Endpoint并实现其方法        
  • 注解式:即定义一个POJO,并添加@ServerEndpoint相关注解

Endpoint具有一定的生命周期我们并不深入研究

在其声明周期中有以下方法可使用:

方法描述注解
onOpen()当开启一个新的会话时调用,该方法是客户端与服务端握手成功后调用的方法@OnOpen
onClose()当会话关闭时调用@OnClose
onError()当连接过程异常时调用@OnError

服务端如何接受客户端发送的数据呢?

  • 编程式:通过添加MessageHandler消息处理器来接受消息 (了解即可)      
  • 注解式:在定义的Endpoint时,通过@OnMessage注解指定接收消息的方法

服务端如何推送数据给客户端呢?

发送消息则由RemoteEndpoint完成,其实例由Session维护

  • 通过session.getBasicRemote获取同步消息发送的实例,然后调用sendXxx()方法发送消息
  • 通过session.getAsyncRemote获取异步消息发送实例,然后调用sendXxx()方法发送消息
@ServerEndpoint("/chat")
//在@ServerEndpoint注解中加入路径
@Component
public class ChatEndpoint {@OnOpen//连接建立时被调用//这里的Session是WebSocket的Session而非Http的HttpSessionpublic void onOpen(Session session, EndpointConfig config){}@OnMessage//message接收到客户端发来的信息public void onMessage(String message){}@OnClosepublic void onClose(Session session){}
}

在线聊天室实现

具体流程分析

消息格式

客户端发给服务端

Json格式

{"toName":"zjk" ,  "message" : "你好"}

服务端发给客户端

  • 系统消息格式:

{"system":true , "fromName": null , "message":["张三","王五"]} 

  • 推送给某一个用户的消息格式:

{"system":false, "fromName": "张三", "message":"你好"}

代码实现

引入必要的依赖坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

编写配置类

在 Spring 框架中,@Bean 是一个用于告诉 Spring 容器 我要自己手动创建一个对象并交给你管理的注解。

它常用于配合 @Configuration 注解的类中,用来显式声明一个 Spring 容器中的 Bean,用于方法上,方法返回值被注册为 Bean。

@Component注解是一个用于告诉Spring容器 你帮我来创建一个对象并管理,Spring 自动扫描并创建,类被扫描注册为 Bean。

/*** WebSocket配置类* @author 赵家康* @date 2025/7/8*/
@Configuration
public class WebSocketConfig {@Bean//注入ServerEndpointExporter,自动注册使用@ServerEndpoint注解public ServerEndpointExporter serverEndpointExporter(){return new ServerEndpointExporter();}
}

编写配置类,用于获取Httpsession对象

/*** 配置类* 用于从 ServerEndpointConfig 中 获取 httpSession 对象*/
public class GetHttpSessionConfigurator extends ServerEndpointConfig.Configurator {@Overridepublic void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request,HandshakeResponse response) {HttpSession httpSession = (HttpSession)request.getHttpSession();//将 httpsession 存入 ServerEndpointConfig对象,方便于websocket在OnOpen()建立链接后获取sec.getUserProperties().put(HttpSession.class.getName(),httpSession);}
}

在@ServerEndpoint注解中引入配置器

@ServerEndpoint(value = "/caht" , configurator = GetHttpSessionConfigurator.class)

什么是 ServerEndpointExporter

它是 Spring Boot 内嵌容器 + WebSocket 结合使用时必须的一个类

  • 它会在应用启动时扫描所有使用了 @ServerEndpoint("/xxx") 注解的类;

  • 并把这些类注册成真正的 WebSocket 端点(endpoint);

  • 也就是说,没有它,Spring Boot 不知道你的 @ServerEndpoint 类是干啥的,WebSocket 就无法正常工作。

项目效果

项目gitee地址:赵家康/基于WebSocket的网络聊天室

已实现同一个用户不可在多端同时登录

http://www.dtcms.com/wzjs/123899.html

相关文章:

  • 容桂做外贸网站googleplay
  • o2o免费网站建设seo包年优化费用
  • 创建wordpress插件北海seo快速排名
  • 合肥做网站公司有哪些市场营销策划方案范文
  • asp网站开发软件搜索引擎优化排名seo
  • 旅游网站设计页面管理培训
  • 大网站建设规范武汉全网营销推广公司
  • 做批发的有哪些网站百度地址
  • 做钉子出口哪个网站好爱站网注册人查询
  • wordpress作企业网站好吗优化百度seo技术搜索引擎
  • 网站注册信息查询广州seo网站推广平台
  • html作业代码厦门seo优化多少钱
  • 冠县网站建设电话搜狗指数
  • 外贸 网站推广计划市场监督管理局是干什么的
  • 做网站报价单地推十大推广app平台
  • 天噜啦更换域名解析移动网站如何优化排名
  • 幼儿做爰网站最新的域名网站
  • 服装网站建设开发语言百度收录工具
  • freenom网站建设关键词怎么选择技巧
  • 哈西建站优化承接网络推广外包业务
  • 潜江做网站哪家好百度咨询电话 人工
  • 网站取消备案直接下载app
  • 做分析图超牛的地图网站2021年度关键词有哪些
  • 网站页面怎么做识别二维码seo的名词解释
  • 做中学网站百度推广手机版
  • 网站做水印有没有影响吗bing搜索引擎入口
  • 想创办一个本地的人才招聘网站_如何做市场调查问卷能打开的a站
  • 北京企业做网站费用关键词优化的策略
  • php网站模板培训心得体会模板
  • 公司产品展示网站源码湖南长沙疫情最新情况