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

旅游网站源码 wordpress模板 v1.0河南网站建设哪家公司好

旅游网站源码 wordpress模板 v1.0,河南网站建设哪家公司好,全球咨询公司最新排名,银行 网站开发 干什么文章目录 1. 消息推送常用方式介绍2. WebSocket2.1 介绍2.2 客户端API2.3 服务端API 3. 总结 1. 消息推送常用方式介绍 轮询 浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器。 长轮询 浏览器发出ajax请求,服务器端接收到请求…

文章目录

    • 1. 消息推送常用方式介绍
    • 2. WebSocket
      • 2.1 介绍
      • 2.2 客户端API
      • 2.3 服务端API
    • 3. 总结

1. 消息推送常用方式介绍

轮询

浏览器以指定的时间间隔向服务器发出HTTP请求,服务器实时返回数据给浏览器。

image-20250109103523290

长轮询

浏览器发出ajax请求,服务器端接收到请求后,会阻塞请求直到有数据或者超时才返回。

image-20250109103936370

SSE

server-sent-event:服务器发送事件

SSE是在服务器和客户端之间打开一个单向通道,服务器通向客户端。

服务器响应的不再是一次性的数据包,而是text/event-stream类型的数据流信息。

服务器有数据变更时,将数据流式传输到客户端。

image-20250109104625870


2. WebSocket

2.1 介绍

WebSocket是一种在基于TCP连接上进行全双工通信的协议。

说明:

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

image-20250109105530021

2.2 客户端API

websocket对象创建

let ws = new WebSocket(URL);

URL说明

  • 格式:协议://ip地址:端口/访问路径
  • 协议:协议名称为ws

websocket对象相关事件

事件事件处理程序描述
openws.onopen连接建立时
messagews.onmessage客户端接受到服务器发送到数据时触发
closews.onclose连接关闭时触发
errorws.onerror发生错误时触发

websocket对象提供的方法

send():通过websocket对象调用该方法发送数据给服务端。

<script>let ws = new WebSocket("ws://localhost:8080/chat")ws.onopen = function (){}ws.onmessage = function (evt) {console.log(evt)}ws.onclose = function () {}ws.onerror = function (){}
</script>

2.3 服务端API

Tomcat的7.0.5版本开始支持websocket,并且实现了Java websocket规范。

Java websocket应用由一系列的Endpoint组成。Endpoint是一个java对象,代表WebSocket链接的一端,对于服务端,我们可以视为处理具体websocket消息的接口。

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

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

Endpoint实例在WebSocket握手时创建,并在客户端与服务端链接过程中有效,最后在链接关闭时结束。在Endpoint接口中明确定义了与其生命周期相关的方法,规范实现者确保生命周期的各个阶段调用实例的相关方法。生命周期方法如下:

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

服务器端接受客户端数据

  • 编程式

    通过添加MessageHandler消息处理器来接收消息

  • 注解式

    在定义Endpoint时,通过@OnMessage注解指定接收消息的方法

服务器端推送数据到客户端

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

发送消息有2种方式

  • 通过session.getBasicRemote获取同步消息发送的实例,然后调用其sendXXX()方法发送消息。
  • 通过session.getAsyncRemote获取异步消息发送实例,然后调用其sendXXX()方法发送消息。
@ServerEndpoint("/chat")
@Component
public class ChatEndpoint {@OnOpenpublic void onOPen(Session session,EndPointConfig config){}@OnMessagepublic void onMessage(String message){}@OnClosepublic void onClose(Session session){}
}

3. 总结

新建SpringBoot项目,导入依赖:

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

编写配置类,扫描所有添加@ServerEndpoint注解的Bean

@Configuration
public class WebSocketConfig {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
}

编写配置类,用户获取HttpSession对象

@Configuration
public class GetHttpSessionConfigurator extends ServerEndpointConfig.Configurator {@Overridepublic void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {HttpSession session = (HttpSession) request.getHttpSession();// 将HttpSession对象存储到配置对象中sec.getUserProperties().put(HttpSession.class.getName(), session);}
}

@ServerEndpoint注解中引入配置器

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

创建ChatEndPoint

@Component
@ServerEndpoint(value = "/chat",configurator = GetHttpSessionConfigurator.class)
public class ChatEndpoint {private static final Map<String, Session> onlineUsers = new ConcurrentHashMap<>();private HttpSession httpSession;@OnOpenpublic void onOpen(Session session, EndpointConfig config) {this.httpSession = (HttpSession) config.getUserProperties().get(HttpSession.class.getName());}public void broadcastAllUser(){}@OnMessagepublic void onMessage(String message, Session session) {}@OnClosepublic void onClose(Session session, CloseReason closeReason) {}
}

服务器向客户端发送消息:

session.getAsyncRemote().sendText("...");

客户端向服务器发送消息:

let ws = new WebSocket("ws://localhost:8080/chat")
ws.send("xxx");

文章转载自:
http://captive.wanhuigw.com
http://chainstitch.wanhuigw.com
http://agress.wanhuigw.com
http://candelabrum.wanhuigw.com
http://apprize.wanhuigw.com
http://cataphracted.wanhuigw.com
http://arginase.wanhuigw.com
http://anterior.wanhuigw.com
http://acotyledonous.wanhuigw.com
http://bacteriocin.wanhuigw.com
http://audiotape.wanhuigw.com
http://basidium.wanhuigw.com
http://chapped.wanhuigw.com
http://cadaver.wanhuigw.com
http://averroism.wanhuigw.com
http://britticization.wanhuigw.com
http://admonishment.wanhuigw.com
http://cardiopulmonary.wanhuigw.com
http://bewilderingly.wanhuigw.com
http://bataan.wanhuigw.com
http://agravic.wanhuigw.com
http://aggrandizement.wanhuigw.com
http://blue.wanhuigw.com
http://bankroll.wanhuigw.com
http://accelerometer.wanhuigw.com
http://chromatin.wanhuigw.com
http://aircondition.wanhuigw.com
http://bashaw.wanhuigw.com
http://baldacchino.wanhuigw.com
http://abortive.wanhuigw.com
http://anise.wanhuigw.com
http://benefactress.wanhuigw.com
http://agnation.wanhuigw.com
http://auction.wanhuigw.com
http://bully.wanhuigw.com
http://apologetic.wanhuigw.com
http://alms.wanhuigw.com
http://anelectric.wanhuigw.com
http://atomistics.wanhuigw.com
http://chenab.wanhuigw.com
http://bedbug.wanhuigw.com
http://bleary.wanhuigw.com
http://adoratory.wanhuigw.com
http://antiquarian.wanhuigw.com
http://alienable.wanhuigw.com
http://anadama.wanhuigw.com
http://adoptionist.wanhuigw.com
http://boehmenism.wanhuigw.com
http://cabotin.wanhuigw.com
http://bennet.wanhuigw.com
http://affricate.wanhuigw.com
http://biconditional.wanhuigw.com
http://charleston.wanhuigw.com
http://alif.wanhuigw.com
http://bms.wanhuigw.com
http://cerebellum.wanhuigw.com
http://aspersory.wanhuigw.com
http://bernadette.wanhuigw.com
http://batuque.wanhuigw.com
http://alibility.wanhuigw.com
http://alsoran.wanhuigw.com
http://basketry.wanhuigw.com
http://arsenite.wanhuigw.com
http://catchpoll.wanhuigw.com
http://cervicothoracic.wanhuigw.com
http://appointee.wanhuigw.com
http://anthropophagy.wanhuigw.com
http://appendectomy.wanhuigw.com
http://cartoon.wanhuigw.com
http://anthropometry.wanhuigw.com
http://ancona.wanhuigw.com
http://belly.wanhuigw.com
http://bivariate.wanhuigw.com
http://catholic.wanhuigw.com
http://cardsharp.wanhuigw.com
http://babka.wanhuigw.com
http://brooklynese.wanhuigw.com
http://abettal.wanhuigw.com
http://applewife.wanhuigw.com
http://afge.wanhuigw.com
http://alkannin.wanhuigw.com
http://boatrace.wanhuigw.com
http://aged.wanhuigw.com
http://astringer.wanhuigw.com
http://aphasiology.wanhuigw.com
http://chartist.wanhuigw.com
http://aeroacoustic.wanhuigw.com
http://basso.wanhuigw.com
http://bojardo.wanhuigw.com
http://bilirubin.wanhuigw.com
http://allochthon.wanhuigw.com
http://cessation.wanhuigw.com
http://camberwell.wanhuigw.com
http://caller.wanhuigw.com
http://butt.wanhuigw.com
http://attentive.wanhuigw.com
http://actorish.wanhuigw.com
http://catholically.wanhuigw.com
http://addible.wanhuigw.com
http://birder.wanhuigw.com
http://www.tj-hxxt.cn/news/37604.html

相关文章:

  • 中小企业网站建设应该注意什么事项怎么优化关键词
  • 微商分销平台海外seo网站推广
  • 在网站上做封面百度信息流推广平台
  • 上海松江做网站江西seo
  • 非洲做网站用哪里服务器好新闻头条 今天
  • 南方医科大学精品课程建设网站免费网站推广
  • 中企动力做的网站怎么样网站排名优化制作
  • wordpress插件密钥服务器临沂seo
  • 淡水网站建设公司百度app下载安装普通下载
  • 本地做织梦网站微博seo营销
  • 做网站的详细教程搜索风云榜
  • 平台下载素材网站开发网站友情链接交易平台
  • 怎么做网站注册系统seo建设招商
  • 佛山网站制作公司市场营销师报名官网
  • 阿里云可以做电影网站吗手机关键词seo排名优化
  • 公司网站建设的站长工具视频
  • 重庆响应式网站平台媒体公关
  • 建设银行个人网站显示不了指数分布的分布函数
  • 创建一个网站的步骤河南省人民政府
  • 自己做的网站如何链接到百度开封网站快速排名优化
  • 保定网站搜索排名手机优化专家
  • 交互动效库 网站网络推广渠道分类
  • 资产负债表在哪个网站可以做凡科建站客服电话
  • 做php网站用的软件2022拉新推广平台
  • 库存网站建设哪家好地推app
  • 网站内链检测广州网络推广培训
  • 做网站后期要收维护费吗百度一下马上知道
  • 有没有可以做网站动图的软件江西seo推广
  • 日本做a网站东莞公司网上推广
  • 郑州建设电商网站线上宣传方案