gball个人知识库
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)

ggball

后端界的小学生
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)
  • 面试

  • 数据库

  • linux

  • node

  • tensorFlow

  • 基础组件

  • 基础知识

    • java集合

    • jvm调优

    • java并发编程

    • java网络编程

      • 网络协议扫盲
      • netty

      • dns解析过程
      • websocket网络协议
      • java8新特性

      • javaAgent

      • java高级

    • 算法与设计模式

    • 分布式

    • 疑难杂症

    • go学习之旅

    • 极客时间

    • 知识库
    • 基础知识
    • java网络编程
    ggball
    2023-05-22

    websocket网络协议

    WebSocket是一种在单个TCP连接上进行全双工通信的网络协议。它提供了一种在客户端和服务器之间进行实时、双向通信的方式,允许服务器主动向客户端推送数据,而不需要客户端发起请求。

    相比于传统的HTTP请求-响应模式,WebSocket协议具有以下特点:

    双向通信:WebSocket协议允许客户端和服务器之间进行双向通信,可以在任意一方发送消息而不受请求-响应的限制。

    实时性:WebSocket提供了实时性的通信,允许服务器主动向客户端推送数据,无需等待客户端的请求。

    低延迟:由于WebSocket使用单个TCP连接,避免了建立和断开连接的开销,可以实现更低的延迟和更高的性能。

    轻量级:WebSocket协议的头部开销相对较小,数据传输效率高,适用于移动设备和低带宽网络环境。

    WebSocket协议在Web应用程序中广泛应用,特别适用于实时聊天、实时数据更新、多人协作和实时游戏等场景。它提供了一种更高效、更实时的通信方式,改善了Web应用程序的用户体验和交互性。

    需要注意的是,WebSocket是一种独立的协议,不同于HTTP协议。它使用不同的通信头部和协议格式。但是,WebSocket握手过程使用HTTP协议,通过HTTP的Upgrade请求进行协议升级,之后切换到WebSocket协议进行通信。这种握手过程使得WebSocket能够通过大部分防火墙和代理服务器。

    websocket 出现的问题

    # was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint

    Mixed Content: The page at '' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://'. This request has been blocked; this endpoint must be available over WSS. (anonymous) Uncaught DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

    因为HTTPS是基于SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密,所以在HTTPS站点调用某些非SSL验证的资源时浏览器可能会阻止。比如使用ws://***调用websocket服务器或者引入类似http://***.js的js文件等都会报错。这里简述一下连接websocket服务器时的错误及解决方案。当使用ws://连接websocket服务器时会出现类似如下错误:

    解决方案:

    #首先将客户端请求websocket时的地址更改为wss:
    //代理服务器url(代理服务器必须支持https) 例如
    var ws = new WebSocket("wss://tiku.toolkit.show/socket/web/message");
    
    1
    2
    3
    
    #在代理服务器上的nginx配置文件中的server中增加如下配置项
    location /socket/ {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade; #请求头设置升级参数 将http 升级成websocket
        proxy_set_header Connection "upgrade";
    }
    
    #http中增加
    upstream backend{
       server 服务器的ip:端口;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    上次更新: 2025/06/04, 15:06:15
    dns解析过程
    java8总结思维导图

    ← dns解析过程 java8总结思维导图→

    最近更新
    01
    AIIDE
    03-07
    02
    githubActionCICD实战
    03-07
    03
    windows安装Deep-Live-Cam教程
    08-11
    更多文章>
    Theme by Vdoing
    总访问量 次 | 总访客数 人
    | Copyright © 2021-2025 ggball | 赣ICP备2021008769号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×

    评论

    • 评论 ssss
    • 回复
    • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    • 回复
    • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    • 回复
    ×