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

Tomcat实现WebSocket即时通讯 Java实现WebSocket的两种方式

HTTP协议是“请求-响应”模式,浏览器必须先发请求给服务器,服务器才会响应该请求。即服务器不会主动发送数据给浏览器。

实时性要求高的应用,如在线游戏、股票实时报价和在线协同编辑等,浏览器需实时显示服务器的最新数据,因此出现Ajax和Comet技术:

  • Ajax本质还是轮询
  • Comet基于HTTP长连接做了一些hack

但它们实时性不高,频繁请求也会给服务器巨大压力,也浪费网络流量和带宽。于是HTML5推出WebSocket标准,使得浏览器和服务器之间任一方都可主动发消息给对方,这样服务器有新数据时可主动推给浏览器。

WebSocket原理

网络上的两个程序通过一个双向链路进行通信,这个双向链路的一端称为一个Socket。一个Socket对应一个IP地址和端口号,应用程序通常通过Socket向网络发出或应答网络请求。

Socket不是协议,是对TCP/IP协议层抽象出来的API。

WebSocket跟HTTP协议一样,也是应用层协议。为兼容HTTP协议,它通过HTTP协议进行一次握手,握手后数据就直接从TCP层的Socket传输,与HTTP协议再无关。

这里的握手指应用协议层,不是TCP层,握手时,TCP连接已建立。 即HTTP请求里带有websocket的请求头,服务端回复也带有websocket的响应头。

浏览器发给服务端的请求会带上跟WebSocket有关的请求头,比如Connection: Upgrade和Upgrade: websocket

img

若服务器支持WebSocket,同样会在HTTP响应加上WebSocket相关的HTTP头部:

img

这样WebSocket连接就建立好了。

WebSocket的数据传输以frame形式传输,将一条消息分为几个frame,按先后顺序传输出去。为何这样设计?

  • 大数据的传输可以分片传输,无需考虑数据大小问题
  • 和HTTP的chunk一样,可边生成数据边传输,提高传输效率

Tomcat如何支持WebSocket


链接:https://juejin.cn/post/7095918534210879519

Java实现WebSocket的两种方式 

参考 https://www.cnblogs.com/onlymate/p/9521327.html

http://www.lryc.cn/news/240908.html

相关文章:

  • 安全框架springSecurity+Jwt+Vue-2(后端开发)
  • 6.1.webrc媒体协商
  • Android WebView中打开外部超链接无反应
  • JMeter集结点的使用场景以及如何使用?
  • 2023最新面试题
  • shell 脚本的函数和数组
  • 【RocketMq系列-02】RocketMq的架构解析和高性能设计
  • 【数据结构/C++】线性表_单链表的基本操作
  • flink1.13.6版本的应用程序(maven版)
  • 深度学习之四(循环神经网络Recurrent Neural Networks,RNNs)
  • 【论文精读】HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face
  • 安装gitlab
  • Nginx模块开发之http handler实现流量统计(1)
  • JSP编写自己的第一个WebServlet实现客户端与服务端交互
  • 三、Keil安装芯片包、下载固件库、建立STM32工程模板
  • 微信相框M1-03花屏抢救照片数据
  • 小程序可拖拽按钮
  • ARM裸机-19(NandFlash和iNand)
  • 机器学习/sklearn笔记:MeanShift
  • opencv-简单图像处理
  • Linux(Kali\Ubuntu\CentOS\arm-Linux)安装Powershell
  • ubuntu20.04安装多版本cuda,切换版本
  • 网络渗透测试(wireshark 抓取QQ图片)
  • gRPC之gRPC负载均衡(客户端负载均衡)(etcd)
  • 语音识别技术paddlespeech的安装和使用
  • 【机器学习】034_多层感知机Part.2_从零实现多层感知机
  • 2023年中职“网络安全“—Web 渗透测试①
  • Android——资源IDnonFinalResIds和“Attribute value must be constant”错误
  • 批量创建表空间数据文件(DM8:达梦数据库)
  • 简单聊聊加密和加签的关系与区别