websocket

微信小程序webSocket 博客简介 本篇博客介绍微信小程序中webSocket的使用方法,以及如何用局部网络建立webSocket连接,进行客户端与服务器之间的对话: webSocket简介 微信小程序端API调用 服务器端使用nodejs配置 演示websocket webSocket简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服... 阅读详情

WebSocket

Websocket协议是基于TCP的一种新的网络协议,他实现了浏览器与服务器全双工通信,允许服务器主动发送信息给客户端,实现了浏览器与服务器全双工通信,属于长连接(不同于HTTP)

最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,

 

已有 HTTP 协议,为什么还需要websocket协议?

答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。

只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

传统的情况下,双工通信是通过多个HTTP链接来实现,这导致了效率低下,,而websocket正是解决了这个问题。

 

实现原理:

在websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应(此过程为握手),这样两者之间只需要一个握手动作就可以形成一个快速通道,直接传输数据。Websocket为实现即时服务提供:

1. Header

互相沟通的Header是很小的-大概只有 2 Bytes

2. Server Push

服务器的推送,服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。

 

特点:

1)建立在TCP协议上,服务器端的实现比较容易

2)与HTTP协议有着很好的兼容性80和443端口

3)数据格式比较轻量级,性能开销少,通信高效

4)可以发送文本也可以发送二进制数据

5)客户端可与与任意服务器通信

6)协议的标识符是ws,加密后是wss,服务器网址就是URL

 

 

HTML5 Web Socket API编辑

创建对象

var ws = new WebSocket(url,name);///url为WebSocket服务器的地址,name为发起握手的协议名称,为可选择项。

发送文本消息

ws.send(msg);////msg为文本消息,对于其他类型的可以通过二进制形式发送。

接收消息

ws.onmessage = (function(){...})();

错误处理

ws.onerror = (function(){...})();

关闭连接

ws.close();

 

建立 WebSocket 连接

为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息"Upgrade: WebSocket"表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。

 

什么是长连接、短连接???

短连接:

连接->传输数据->关闭连接

HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

长连接:

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

 

HTTP1.1通过使用keep-alive进行长连接双方并没有建立正真的连接会话,服务端可以在任何一次请求完成后关闭,但是对每个请求仍然要单独发 header,Keep-Alive不会永久保持连接,它有一个保持时间,伪连接

WebSocket 它本身就规定了是正真的、双工的长连接,两边都必须要维持住连接的状态。长连接第一次tcp链路建立之后,后续数据可以双方都进行发送,不需要发送请求头。

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WebSocket的基本使用 WebSocket 是一种网络协议,用于在客户端和服务器之间进行双向通信。它允许在一个单独的 TCP 连接上进行全双工通信,因此比传统的 HTTP 请求-响应模型更高效。 阅读详情

相关推荐

SpringBoot整合WebSocket服务 springboot整合websocket springboot使用websocket springboot使用websocket

仅使用 SpringBoot封装好的服务,并不是使用第三方Netty或者: 底层使用实现: 底层使用Netty实现(没有使用过,不知道具体)官方文档1官方文档2。

web17886480312的博客 6760

WebSocket使用介绍

开启WebSocket constws=newWebSocket("WebSocket地址") ws.onmessage=function(evt){ console.log('Received Message:'+evt.data) }

weixin_42489478的博客 1479

ESP32入门基础之ESP WebSocket Client

ESP WebSocket Client

while(1) 5037

Websocket(一)——原理及基本属性和方法

初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。 WebSocket 协议在2008年诞生,2011年成为国际标准。...

lxrj2008的专栏 3375

Django 实现Websocket

django实现websocket大致上有两种方式,一种channels,一种是dwebsocket。channels依赖于redis,twisted等,相比之下使用dwebsocket要更为方便一些。 安装:  pip install dwebsocket 配置: # setting.py INSTALLED_APPS = [ ..... ..... 'dw...

FanMLei的博客 8295

websocket / 使用 wireshark 分析 websocket 连接过程

一、连接过程时序图 二、wireshark 分析 上图是一个完整的进行 websocket 连接时产生的数据包。 根据时序图可知,前 3 行是 tcp/ip 握手过程,因为可以通过标志来看到,前 3 个标志(Flags)分别为 SYN、SYN ACK、ACK。这是建立 http 请求的需要,和 websocket 没有关系。 第 4 条就是 client 主动发给 server 的握手协议了,如下图所示: 细心的小伙伴可以发现,这套代码是基于 C++ 版的 websocketpp 实现

布袋和尚 3618

前端使用websocket发送消息,建立连接(详细)。【前端】

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它可以让客户端和服务器之间进行实时的双向通信。与传统的 HTTP 请求不同,WebSocket 使用了一个长连接,在客户端和服务器之间保持持久的连接,从而可以实时地发送和接收数据。在 WebSocket 中,客户端和服务器之间可以互相发送消息。客户端可以使用 JavaScript 中的 WebSocket API 发送消息到服务器,也可以接收服务器发送的消息。

weixin_55451254的博客 5493

从Stereo-seq原始数据到Seurat对象:华大空间转录组分析流程实战解析

本文详细解析了从Stereo-seq原始数据到Seurat对象的完整分析流程,重点解决华大空间转录组数据处理中的三大痛点:bin_size参数设置、批量处理内存管理及格式转换信息丢失。通过Python的stereopy库和R的SeuratDisk包,实现.gem到.h5ad再到.h5seurat的高效转换,为研究者提供了一套可复用的空间转录组分析解决方案。

weixin_30315723的博客 217

React中使用websocket连接

React WebSocket

小蜜蜂的博客 4万+

Ubuntu 20.04 上 Geant4 安装避坑全记录:从源码编译到 B1 示例跑通(含数据包加速下载)

本文详细记录了在Ubuntu 20.04系统上从源码编译安装Geant4的全过程,包括环境准备、依赖安装、CMake参数解析、多线程编译优化以及数据包加速下载等关键步骤。特别针对B1示例的测试与验证提供了完整流程,帮助科研人员和学生避开常见安装陷阱,提升粒子物理模拟效率。

weixin_31220401的博客 312

Codesys电子凸轮Cam表实战:从可视化配置到程序化构建

本文详细介绍了Codesys电子凸轮Cam表的实战应用,从可视化配置到程序化构建的全过程。通过包装机和印刷机案例,解析Cam表的基础设置、调试技巧及动态构建方法,帮助工程师快速掌握电子凸轮技术,提升运动控制精度和效率。

weixin_29309785的博客 297

WebSocket原理及技术简介

WebSocket原理及技术简介 目录 1    引言    1 2    WebSocket技术及协议    2 2.1    WebSocket API    2 2.1.1    示例    3 2.2    WebSocket协议    4 2.2.1    握手阶段    4 2.2.2    数据通信    5 2.2.3    连接关闭

当年老王的专栏 4万+

DaVinci配置DID之三:代码实现

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程3话不多说,走你~博主是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于测试验证的博文再相会哈~

weixin_48498880的博客 5354

springboot集成websocket

​ 这里我们使用springboot搭建一个轻量级的websocket服务,同时提供4个入参。使用websocket服务可以轻松和微信小程序、支付宝小程序、网页就行双向通讯,非常实用方便。wss地址这里是我们自己搭建的中转服务websocket地址。参数说明。

大爱仙尊 3万+

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems

该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。

CSPhD-winston的博客 493

ETAS工具导入DBC生成Com协议栈

ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项不管是导入DBC还是arxml,本质上都是为了生成对应的com协议栈,目的是为了减少重复的工作量,所以,前期定义好收发的矩阵很重要,一般导入一次之后,后面就可以按变更点手动更改了。

赞的博客 1710

websocket入门及应用

**WebSocket** 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 是双向通讯,有状态,客户端一(多)个与服务端一(多)双向实时响应(客户端 ⇄ 服务端)。WebSocket 是应用在浏览器的 Socket (是 Socket 模型接口的实现),Socket 是一个网络通信接口 (通信规范)。

qq_36115196的博客 1382

一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析

该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。

master_hunter的博客 1万+

Django通过dwebsocket实现websocket

与django推荐的channel不同,dwebsocket使用更加方便简单 使用方法1: 只需views.py文件中,将对应的视图函数添加装饰器 accept_websocket-—可以接受websocket请求和普通http请求 require_websocket----只接受websocket请求,拒绝普通http请求 from dwebsocket.decorators import ...

毛毛腿的博客 1万+

PX4实战(十):PX4导航模块(Navigator)详解

本文将对 PX4 固件 v1.14.3 版本中的 Navigator(导航)模块进行详尽的技术剖析。作为飞行控制栈中的高层决策核心,Navigator 模块承担着将抽象的任务指令转化为具象的底层控制设定点的关键职责。本文基于对 src/modules/navigator 目录下源代码的深究研究与架构反推,详细阐述了该模块的文件组织结构、基于状态机的控制逻辑、uORB 异步通讯机制、核心任务模式(Mission)与返航模式(RTL)的实现细节,以及地理围栏(Geofence)与任务可行性检查(Feasibil

PX4-SLAM-PNC 667

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

websocket封装

websocket封装

weixin_43422861的博客 6188

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring Boot整合websocket遇到的小问题

在项目根目录下创建一个endpoint包,在endpoint包下创建一个WebSocket类,在类上添加@Component和@ServerEndpoint注解,并通过@ServerEndpoint的value属性指定请求路径,用法类似于@RequestMapping。意思是onOpen()方法上的一个String类型的参数上没有用@PathParam注解,检查了一下,确实没有用这个注解,用的是@PathVariable,这两个注解的作用是类似的,都是获取rest风格请求的参数。修改之后能正常启动了。

沐雨橙风ιε的博客 3772

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WebSocket之Sec-WebSocket-Protocol

后端通过继承ServerEndpointConfig.Configurator类来完成握手。前端创建的websocket对象。后面的数组可以传多个。

weixin_44142871的博客 2586
上一篇: STL
下一篇: TCP(三次握手,四次挥手)
sillyerser
博客等级 码龄9年 10粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值