码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    昭通市鲁甸县卯家湾安置区:凝心聚力 共谱民族团结进步新篇章
    Z-Fighting问题解决(二) - Reverse-z
    回音壁与电视扬声器那些不得不说的事
    FastWiki v0.1.0发布!新增超多功能
    非比较排序------计数排序
    ThreadLocal的原理
    药物研发检测记录模板-0901溶液颜色检查法检验原始记录
    【网络安全】逻辑漏洞保姆级讲解
    时间序列与 statsmodels:预测所需的基本概念(2)
    linux证书生成详解
  • 原文地址:https://blog.csdn.net/zdwzzu2006/article/details/134545154
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号