Web Scoket简述

news2024/11/25 7:14:28

Web Socket 简介

初次接触 Web Socket 的人,我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?

因为 HTTP 协议有一个缺陷:通信只能由客户端发起。http基于请求响应实现。
(准确来说HTTP只能由 客户端 单向向 服务端 请求
【如果想实现连续获取服务端的数据变化,只能通过 "轮询" 的方式获取】
(例如: 保持登录的状态的 心跳检测 机制))

Web Socket 的特点

是一个长时链接,实现与服务端的全双工,双向的通讯。【客户端与服务端的双向通讯】

URl变化

使用的是自定义协议,所以不能用 http:// 或者 https://(不安全链接),而是要使用 ws:// 和 wss:// (安全链接)

使用自定义协议的好处

客户端与服务端之前发送非常少的数据,不会对http造成负担。
使用更小的数据包,可以让 Web Socket  非常适合宽带和延迟问题比较明显的移动应用。
所有浏览器都支持

【一句概述:数据少,发送快,不会对http造成请求,交互效果好。】

缺点:定义协议的时间比定义JavaScript API要长。

Web Socket API

  • 实例化Web Socket
  var ws = new WebSocket('ws://xxx.xx.xx') 
  • send 消息发送

    ws.send()
    
  • messag 消息接受

    ws.onmessage() = function(event){
      console.log(event.data)
    }
    
  • close 断开链接

    ws.close()
    

其他事件

  • open 在链接成功建立时触发

    ws.onopen = function() {
    	console.log("链接建立成功")
    }
    
  • error 在发生错误时触发,链接无法存续

    ws.onerror = function() {
    	console.log("链接失败")
    }
    
  • close 在关闭时触发

    ws.onclose = function() {
    	console.log("链接失败")
    }
    

基本步骤

  1. 浏览器发出链接请求(链接不受同源策略的影响)
  2. 服务器告知链接成功
  3. 双方进行双向通讯
  4. 关闭连接

在这里插入图片描述

示例代码

// 打开websocket连接
// WebSocket 是浏览器的内置对象
var ws = new WebSocket('ws://xxx.xx.xx') // 建立与服务端地址的连接

// onopen是webSocket约定事件名
// 当本地客户端浏览器与服务器建立连接之后,就会执行onopen的回调
ws.onopen = function () {
    // 如果执行此函数 表示与服务器建立关系成功
}

// 发送消息
ws.send('消息')

// 接收消息
ws.onmessage = function (event) {
    // event中的data就是服务器发过来的消息
}

ws.close()
// 关闭连接成功
ws.onclose = function () {
    // 关闭连接成功
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Cloudflare Zaraz 可让同意管理变得简单明了

视您的居住地而定,在首次造访网站时,可能会要求您同意使用Cookie。如果您曾经点选过「核准」以外的其他选项,您就会注意到,关于应该或不应该允许哪些服务使用Cookie 的选项清单可能非常长。这是因为网站通常会整合许多第三方工具进…

陕西省赛2023-部分Reverse复现

目录 我的upx -d怎么坏了 动调脱upx壳: babypython BadCoffee ob混淆: 我的upx -d怎么坏了 打开附件,发现是upx壳,应该是修改了区段名或者特征码 但是修改过还是不对.....(哭.jpg)应该还是改了其他 好学长告诉我直接动态调试…

【Matter】Nordic Mattter(开发大纲)

nRF Connect SDK 支持Mattter Nordic提供的Matter用户指南 子页面: Matter概况开始使用Matter如何创建 Matter 最终产品 Matter网络拓扑结构 Thread:Thread是一种开放的低功耗无线通信协议,旨在为物联网设备提供安全、稳定、高效的IPv6连接。…

混合动力汽车耐久测试

一 背景 整车厂可通过发动机和电机驱动的结合为多款车型提供混合动力驱动技术。汽车集成电机驱动可大大减少二氧化碳的排放,不仅如此,全电动驱动或混合动力驱动的汽车还将使用户体验到更好的驾驶感受,且这种汽车可通过电动机来实现更快的加速…

机器学习 | 降维问题

目录 一、主成分分析 二、奇异值分解 2.1 奇异值分解原理 2.2 奇异值分解实践 三、特征值与特征向量 一、主成分分析 主成分有如下特征: 每个主成分是原变量的线性组合;各个主成分之间互不相关;主成分按照方差贡献率从大到小依次排列&…

【诗视野文学社】五一特刊|本期诗人:胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵

【诗视野文学社】五一特刊 本期诗人:胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵 脂茉莉简介:刘彦芹,女,作家、诗人,江苏人,年少习诗,评论及随笔见诸媒体及报刊,诗歌被选入海…

中国人民大学与加拿大女王大学金融硕士引领你走出职场困境,勇往直前!

走到一定职位时,想更进一步基本无望,到了自己事业的瓶颈期。从底层一路冲到中层靠的是能力,靠的是忠诚,靠的是勤奋,而再向上走,该凭借什么,完全找不到方向。而那些极个别的人却在自己看不到的地…

基于PySpark的10亿级数据集LAION-5B元数据快速处理实践(全文分享)

推荐语 多模态大模型训练如火如荼展开,但以LAION-5B为代表的大规模多模态数据集获取却成了一个令人头疼的问题。 OpenDataLab两位工程师在浦数 AI Talk做了非常实用的LAION-5B下载经验分享,我们整理了其演讲内容、Parquet文件、图片下载工具&#xff0…

Hive执行计划之一文读懂Hive执行计划

目录 文章目录 概述1.hive执行计划的查看2.学会查看Hive执行计划的基本信息3.执行计划步骤操作过程4.explain extended 概述 Hive的执行计划描述了一个hiveSQL语句的具体执行步骤,通过执行计划解读可以了解hiveSQL语句被解析器转换为相应程序语言的执行逻辑。通过…

软件测试人员迷茫之中如何找到职业发展的方向?

出现迷茫或焦虑的原因是什么? 也许每个人的原因不一样,但不外乎是下面这些原因叠加的结果。 1、敏捷和DevOps开发模式的推行,虽然20年的历史是否已经证明“敏捷已经失败了” 暂且不管,但敏捷/DevOps之风刮的还是很厉害&#xff0c…

每日一练 | 华为认证真题练习Day53

1、现在有以下10.24.0.0/24,10.24.1.0/24,10.24.2.0/24,10.24.3.0/24四个网段,这四个网段可以汇总为以下哪个网段?(多选) A. 10.24.0.0/23 B. 10.24.1.0/23 C. 10.24.0.0/22 D. 10.24.0.0/2…

Window环境rabbitmq安装教程

首先我们需要取官网下载对应的两个安装包 第一个是rabbitmq安装包路径在括号里(Installing on Windows Manually — RabbitMQ) 我们选择window下载即可。 下图是下载的样子,确认是这两个就没问题了 第二个是erlang(http://erlang…

上海市计算机学会竞赛平台五月月赛题目汇总

我又来了! 爆切了一大堆没用的水题后,我终于来发题解啦!!! T1原题https://iai.sh.cn/problem/792 我们考虑通过计算最长上升连续自然数串(是这么叫的吗)来获取答案 可以开两个数组 和 来计…

从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用

作者:DataTester 用户体验是决定互联网产品能否长久生存的关键,每一个基于产品功能、使用和外观的微小体验,都将极大地影响用户留存和满意度。 对于企业协作平台飞书而言,用户体验旅程从打开产品页面的一瞬间就已开始,…

如何安装多个node版本(使用nvm)

1、卸载之前安装的所有node 2、下载nvm安装包,下载地址https://nvm.uihtm.com/ 3、安装nvm 4、打开cmd,运行命令 nvm install node版本号,安装对应版本的node 5、打开nvm的安装路径,可以看到安装的对应的node版本的文件夹 6、若有…

K8S之Deployment控制器管理应用(十一)

Deployment介绍 Deployment是最常用的K8s工作负载控制器(Workload Controllers), 是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。 Deployment的主要功能: • 管理Pod,即应用程序 •…

CS1237 数据实测

目录 硬件 测试数据 结论 性能 转换时间 硬件 外部电阻电位器 模拟 传感器信号 测试数据 一下记录数据为ADC原始数据未经过软件滤波 跳动幅度图片DEV_FREQUENCY_10DEV_PGA_1751DEV_FREQUENCY_40DEV_PGA_11562DEV_FREQUENCY_640DEV_PGA_18243DEV_FREQUENCY_640DEV_PGA_644…

Spring:什么是SpringBoot框架?①

前言: 我们说任何一个阶段的技术更迭都是在代码量,代码简洁度,封装后复杂关注度降低上下功夫,不断提升生产力。 Spring已经足够牛了,它的bean容器思想启迪和影响了众多的程序员,奠基引领了技术的发展。 在应…

人工智能直播的趋势分析报告

人工智能直播是指通过人工智能技术来模拟真人直播,通过机器学习和自然语言处理等技术实现。随着人工智能技术的不断发展,人工智能直播在近年来得到了广泛应用。 一、人工智能直播的优势 节省成本:相比传统直播,人工智能直播不需要…

校园垃圾回收处理APP

摘 要:本文开发的是校园垃圾分类回收APP。随着互联网的快速发展,现如今使用互联网对信息进行管理这一方法也被各行各业所使用,因为实现信息管理最好的方式就是建立良好的网络管理平台,并对其进行综合管理。与此同时,A…