WebSocket 双向通信

这篇具有很好参考价值的文章主要介绍了WebSocket 双向通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WebSocket 双向通信,计算机网络,项目 业务,深入SpringBoot框架,websocket,网络协议,网络,springboot,java

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

WebSocket 双向通信,计算机网络,项目 业务,深入SpringBoot框架,websocket,网络协议,网络,springboot,java


🚀消息推送

消息推送的常见方式

  • 轮询方式:
      1. 客户端发起轮询请求: 客户端定期(例如每隔一定时间)向服务器发送请求,询问是否有新的消息。这可以通过使用定时器或定时任务实现。
      2. 服务器响应: 服务器接收到客户端的轮询请求后,检查是否有新的消息或数据。如果有,服务器将相关信息作为响应返回给客户端;否则,服务器返回一个空响应或一个标识表示没有新消息。
      3. 客户端处理响应: 客户端收到服务器的响应后,解析响应数据。如果有新消息,则处理这些消息;如果响应为空或表示没有新消息,则继续等待下一次轮询。
      4. 重复过程: 客户端在一定的时间间隔内不断重复上述轮询过程,以确保及时获取到新消息。



  • 长轮询方式:
      1. 客户端发起请求: 客户端通过Ajax等方式向服务器发送一个长轮询请求。
      2. 服务器等待: 服务器收到请求后,检查是否有新消息。如果没有新消息,服务器不会立即响应,而是等待一段时间。
      3. 有新消息时响应: 如果在等待期间有新消息到达,服务器会立即将消息作为响应发送给客户端。
      4. 客户端处理响应: 客户端收到响应后,处理消息,并立即发起下一个长轮询请求。
      5. 重复过程: 上述步骤反复进行,形成一个长轮询的循环。



  • SEE(server-sent event)方式:服务器发送事件,是一种在客户端和服务器之间实现单向实时通信的技术。
    • SEE在服务器与客户端之间打开了一个单向通道;
    • 服务器响应不再是一次性的数据包,而是Content-Type: text/event-stream类型的数据流消息;
    • 当服务器有数据变更时,将数据 流式地传输到客户端;



  • WebSocket方式: WebSocket是一种全双工通信协议,适用于实时双向通信。
      1. 建立WebSocket连接: 客户端通过创建一个 WebSocket 对象来与服务器建立连接,使用 WebSocket 的 URL(例如 ws://example.com/socket)来指定连接的目标。
      2. 监听WebSocket事件: 客户端可以监听多种事件,例如 openmessagecloseerror。其中,open 事件表示连接已经建立,message 事件用于接收服务器发送的消息。
      3. 服务器发送消息: 服务器端通过 WebSocket 连接向客户端发送消息,在服务器用WebSocket对象的 send 方法实现。
      4. 客户端发送消息(可选): 客户端也可通过 WebSocket 连接向服务器发消息。
      5. 关闭WebSocket连接: 当通信结束时,可以通过调用 WebSocket 对象的 close 方法来关闭连接。



🚀WebSocket API


⚪客户端 API

在浏览器中,JavaScript提供了WebSocket API,它使开发人员能够创建WebSocket连接、发送和接收消息。基本的WebSocket客户端API包括以下几个主要接口和方法:

  • WebSocket: 这是WebSocket的主要接口,用于创建WebSocket实例。
  • onopen: 当连接建立时触发的事件处理程序。
  • onmessage: 当接收到消息时触发的事件处理程序。
  • send(data): 用于将数据发送到服务器。
  • onclose: 当连接关闭时触发的事件处理程序。
  • onerror: 当发生错误时触发的事件处理程序。

JS代码示例

let socket = new WebSocket('ws://localhost/websocket');

socket.onopen = function(event) {
  console.log('WebSocket connection opened:', event);
  socket.send('Hello, server!');
};

socket.onmessage = function(event) {
  console.log('Message from server:', event.data);
};

socket.onclose = function(event) {
  console.log('WebSocket connection closed:', event);
};

socket.onerror = function(event) {
  console.error('WebSocket error:', event);
};



⚪服务端 API

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

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

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

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

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

WebSocket 双向通信,计算机网络,项目 业务,深入SpringBoot框架,websocket,网络协议,网络,springboot,java

WebSocket 双向通信,计算机网络,项目 业务,深入SpringBoot框架,websocket,网络协议,网络,springboot,java



  • 在Java中,使用javax.websocket创建WebSocket服务器的基本示例:
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3b8b4d905ddb42a48406a7269b1f48d6.png)

@ServerEndpoint("/websocket")
@Component
public class MyWebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket connection opened: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("Message from client: " + message);
        session.getAsyncRemote().sendText("Hello, client!");
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("WebSocket connection closed: " + session.getId());
    }
}




WebSocket 双向通信,计算机网络,项目 业务,深入SpringBoot框架,websocket,网络协议,网络,springboot,java文章来源地址https://www.toymoban.com/news/detail-812386.html

到了这里,关于WebSocket 双向通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【计算机网络】浏览器的通信能力

    【计算机网络】浏览器的通信能力

    浏览器可以代替用户完成http请求,代替用户解析响应结果,所以我们称之为用户代理 user agent。 浏览器两大核心能力: 自动发送请求的能力 自动解析响应的能力 1.1 自动发送请求的能力 用户在地址栏输入了一个url地址,并按下了回车 浏览器会自动解析URL,并发出一个 GET 请

    2024年02月06日
    浏览(9)
  • 计算机网络的常用的网络通信命令(Windows)

    ping:它是用来检查网络是否通畅或者网络连接速度的命令。ping命令利用的原理是:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作

    2024年02月01日
    浏览(7)
  • 数据通信与计算机网络(精炼知识点)

    该部分知识点不多,分值3分 TCP采用可变大小的滑动窗口协议进行流量控制。在前向纠错系统中,当接收端检测到错误后就根据纠错编码的规律自行纠错;在后向纠错系统中,接收方会请求发送方重发出错分组。IP协议不预先建立虚电路,而是对每个数据报独立地选择路由并一

    2024年02月06日
    浏览(13)
  • 网际奇缘:计算机网络演进、概念探秘与通信魔法!

    网际奇缘:计算机网络演进、概念探秘与通信魔法!

    🪶🪶为了解内容 🍁🍁为重要内容 计算机网络:计算机网络是一组 自治 计算机 互连 的集合。 自治 是指每个计算机都有自主权,不受别人控制; 互连 则是指使用通信介质进行计算机连接,并达到相互通信的目的。 通俗地讲, 计算机网络就是把分布在不同地理区域的独立计算

    2024年02月12日
    浏览(16)
  • 计算机网络中的通信子网主要有哪些功能?

    计算机网络中的通信子网主要具有以下功能: 负责全网的数据通信:通信子网通过使用各种通信协议和传输控制功能,能够确保数据从一台主机安全、准确地传输到另一台主机。这包括数据的封装、解封装、传输控制、差错控制等过程。 完成各种网络数据的处理、转换和交换

    2024年02月04日
    浏览(10)
  • 计算机网络-OSI参考模型(来由 通信过程 各层分析)

    计算机网络-OSI参考模型(来由 通信过程 各层分析)

    两种网络分层结构 结合事实标准和法定标准得到一个中和版本5层的体系结构 刚开始各个公司的网络体系结构不同,所以不能互通 所以ISO组织提出了这么一个模型,但由于与实际应用还是有点偏差,所以实际应用还是采用了TCP/IP模型 资源子网和通信子网相当于就是一个是对

    2024年01月25日
    浏览(12)
  • 【计算机网络】2、传输介质、通信方向、通信方式、交换方式、IP地址表示、子网划分

    【计算机网络】2、传输介质、通信方向、通信方式、交换方式、IP地址表示、子网划分

    将多根铜线按规则缠绕在一起,能够减少干扰;分为 无屏蔽双绞线UTP 和 屏蔽双绞线STP ,都是由一对铜线簇组成。也即我们常说的 网线 ;双绞线的 传输距离在100m 以内 无屏蔽双绞线UTP 价格低安装简单,但可靠性相对较低,比屏蔽双绞线STP细一点分为: CAT3(3类UTP,速率为

    2024年01月20日
    浏览(11)
  • 【计算机网络】思科实验(2):交换机间的VLAN通信

    【计算机网络】思科实验(2):交换机间的VLAN通信

    【计算机网络】思科实验(1):交换机的VLAN划分 【计算机网络】思科实验(2):交换机间的VLAN通信 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信 【计算机网络】思科实验(4):综合实验作业之办公室的跨VLAN通信 【计算机网络】思科实验(5):单臂路由跨VLAN通信

    2024年02月04日
    浏览(45)
  • 软考高级之系统架构师之数据通信与计算机网络

    软考高级之系统架构师之数据通信与计算机网络

    80/20规则是指总流量的80%是网段内部的流量,而总流量的20%是网段外部的流量。 在划分区域之后,OSPF网络中的非主干区域中的路由器对于到外部网络的路由,一定要通过ABR(区域边界路由器)来转发,既然如此,对于区域内的路由器来说,就没有必要知道通往外部网络的详细路

    2024年02月13日
    浏览(12)
  • 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信

    【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信

    【计算机网络】思科实验(1):交换机的VLAN划分 【计算机网络】思科实验(2):交换机间的VLAN通信 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信 【计算机网络】思科实验(4):综合实验作业之办公室的跨VLAN通信 【计算机网络】思科实验(5):单臂路由跨VLAN通信

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包