websocket使用方法

news2025/2/3 4:01:30

前言

最近项目用到了websocket接口,用来做长连接,监听服务器数据变化,保持各终端数据同步。

用下来发现确实很好用,避免了轮询,开销小,而且最重要的是没有同源策略限制

websocket

WebSocket 是一种在单个TCP 连接上进行全双工通信的协议,和http(1.1)那种请求-响应式的半双工不一样的是,WebSocket可以让客户端和服务器之间交互数据。并且允许服务端主动向客户端推送数据。

websocket特点

  • 建立在TCP协议之上,与HTTP协议有着良好的兼容性,默认端口也是80/443;
  • 握手阶段采用HTTP协议,能通过各种HTTP代理服务器
  • 数据格式轻量,开销小,通信高效;
  • 没有同源策略限制,客户端可以与任意浏览器通信

websocket原理

Websocket 通过HTTP(1.1)协议的101状态码进行握手。

与HTTP的三次握手不同的是,Websocket一次握手可以建立连接。

Websocket借用HTTP与服务器进行‘握手’,并通过协议升级成Websocket协议。

image.png

websocket使用

属性描述
Socket.readyState只读属性 readyState 表示连接状态,可以是以下值:- 0 - 表示连接尚未建立。1 - 表示连接已建立,可以进行通信。2 - 表示连接正在进行关闭。 3 - 表示连接已经关闭或者连接不能打开。
事件事件处理程序描述
openSocket.onopen连接建立时触发
messageSocket.onmessage客户端接收服务端数据时触发
errorSocket.onerror通信发生错误时触发
closeSocket.onclose连接关闭时触发

示例代码

// 创建WebSocket连接.
const socket = new WebSocket('ws://localhost:8080');
// 连接成功触发
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});
// 监听消息
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});

结语

本文到此结束,谢谢大家的观看!

如有问题,欢迎各位指正!

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

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

相关文章

Nginx-安装和部署全过程

前言 OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。openresty官网:OpenResty - 中文官方站 …

软件著作权到底享有哪些权利?

根据《计算机软件保护条例》相关规定 软件著作权人享有下列各项权利: (一)发表权,即决定软件是否公之于众的权利; (二)署名权,即表明开发者身份,在软件上署名的权利; &a…

iOS的启动优化

应用的启动优化 当我们参与到大型应用的时候 会遇到一些启动时间过长的情况 这时候就需要使用到相关的操作。 总结来说,main()方法调用前,启动过程大体分为如下步骤: 先是LLVM把项目翻译成IR文件然后到backend,PRE_MAIN,main。 …

感冒咳嗽土法子

目录介绍 01.常见的感冒药02.止咳的土方法03.感冒的土方法 01.常见的感冒药 感冒是生活中最常见的疾病 患者往往会有:头昏、发烧、浑身酸痛、鼻塞、流鼻涕等症状 注意点 注意休息,适当补充水分,保持室内空气流通。 常见感冒药 主要成分的作…

CSS规范

CSS规范 命名规范 页面外围控制整体布局宽度:wrapper、页头:header、页面主体:main、内容:content、页脚:footer、导航:nav、主导航:mainbav、子导航:subnav、顶导航:t…

利用FormData上传本地文件

前言 最近接了个小项目,有个用客户端本地文件的需求。 正常这种需求都是前台传文件,后台去解析。 但这次C的老哥非让我给文件路径,说公司平台有解析文件的能力。 我说web不是桌面端,拿不到真实路径,他还不信&#…

已解决1. Downgrade the protobuf package to 3.20.x or lower.

已解决TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc > 3.1.0If you cannot immediately regenerate your protos, some other possible worka…

【Ctfer训练计划】——(二)

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

kubernetes管理应用配置之ConfigMap和Secret

目录 一、ConfigMap 二、Secret 一、ConfigMap 应用部署的一个最佳实践是将应用所需的配置信息与程序进行分离,这样可以使得应用程序被更好地复用,通过不同的配置也能实现更灵活的功能。 将应用打包为容器镜像后,可以通过环境变量或者外挂文…

【MySQL】3.MySQL表操作

文章目录1.0 MySQL表操作详解1.1 MySQL创建表1.2 MySQL查看表结构1.3 MySQL修改表1.0 MySQL表操作详解 1.1 MySQL创建表 指令:create table table_name(field1 datatype, field2 datatype) character collate engine; 后面三个参数可以省略,MySQL会自动调用默认…

开源绘图神器,Labplot的初步使用

文章目录数据生成图像定制多图绘制Labplot是一款开源且免费的科学绘图软件,除了Windows外,对Linux的Debian、Ubuntu、Fedora等发行版均有着良好的支持。 其下载地址为:LabPlot2下载,安装过程注意选择中文。 数据生成 打开软件后…

新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作

区块链去中心化思想无处不在,比如最近使用个体抗原自检替代大规模的中心化核酸检测,就是去中心化思想的落地实践,避免了大规模聚集导致的交叉感染,提高了检测效率,本次我们使用Ethereum最新的ethersV5.0以上版本链接去…

XXL-JOB架构篇 - 初识分布式任务调度XXL-JOB

任务调度 一、什么时候需要任务调度? 基于时间的任务 批量数据的处理 异步解耦(比如先做任务A,再做任务B) 二、任务调度的基本需求有哪些? 可以定义触发的规则,比如基于时刻、时间间隔、表达式。 可以定义…

5G无线技术基础自学系列 | RF优化概述

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 随着5G商用网络的陆续建设,…

疫情抑制珠宝消费增长,珠宝主要市场需求萎缩

一、我国珠宝行业市场规模持续增长 根据观研报告网发布的《2022年中国珠宝行业分析报告-行业现状与发展趋势分析》显示,2021年上半年,中国金饰需求增长强劲,中国金饰消费量在2021年第二季度趋于稳定,使上半年金饰总需求达到338吨…

chatGPT接口,不需要科学上网就可以调用的OPENAI接口

最近很多国产版本的chatGPT出现了 查找了一圈发现调用的openai 的一个接口 测试了一下效果还算可以吧 视频教程 链接: 视频教程 用接口自己写了一个测试的网页 日常使用应该是不成问题 接口整理好了在这: 请求接口: URL:-POST https://api.openai.…

m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在无线通信系统中,从发射端发射的信号,经过直射、反射、散射等路径到达接收端。在ofdm系统中,为了获取更好的性能,需要进行信道估计获取信道的状态…

Diffusion Model合集 part1

扩散模型原理介绍1一,条件概率公式与高斯分布的KL散度重参数技巧二,VAE和多层VAE回顾单层VAE的原理公式与置信下界多层VAE的原理公式与置信下界三,Diffusion Model 图示四,扩散过程(Diffusion Process)与VAE的区别:如何…

腾讯云weda低代码让别人能看到发布的应用

我们先登录低代码的平台 腾讯云-控制台 (tencent.com) 我们从创建应用开始讲起,点击新建门户应用: 点击确定 我们先把这个应用发布。 确认发布。 显示出,下面这个已经发布成功后,我们就返回到主页面。 返回主界面,点…

《Docker系列》Docker安装MySQL 5.7

Docker安装MySQL 5.7 一、docker拉取MySQL 5.7镜像 docker pull mysql 拉取最新MySQL docker pull mysql:5.7 拉取指定版本MySQL 1 拉取mysql 5.7镜像 [rootzxy_master ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql d26998a7c52d: Pull complete 4a9d8a356…