websockt初始化,创建一个webSocket示例

news2024/9/23 9:30:34

写文思路:

以下主要从几个方面着手写websocket相关,包括以下:什么是webSocket,webSocket的优点和劣势,webSocket工作原理,webSocket握手示例,如何使用webSocket(使用webSocket的一个示例),应用场景。。。

一、什么是webSocket

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。

它由 IETF 于 2011 年作为 RFC 6455 标准化,并由 Web IDL 中的 WebSocket API 支持。

它被设计用于在客户端和服务器之间建立长时间的双向通信通道,克服传统 HTTP 的一些限制,特别是在需要实时数据传输的场景下。

二、 webSocket的优点和劣势

  • 全双工通信

    • 允许客户端和服务器在一个单一的连接上同时发送和接收消息。这与传统 HTTP 请求-响应模型不同,后者是半双工的。
  • 长连接

    • 一旦建立连接,WebSocket 保持连接打开状态,直到客户端或服务器主动关闭。这减少了频繁建立连接的开销。
  • 低延迟

    • 因为连接保持打开状态,所以无需为每个消息重建连接,从而显著降低延迟,适用于实时性要求高的应用。
  • 数据格式

    • WebSocket 支持传输文本数据和二进制数据。消息传递可以更灵活,不受 HTTP 头信息的约束。
  • 轻量级

    • 初始握手是基于 HTTP 协议进行的,但成功后,数据交换采用更轻量级的 WebSocket 帧格式,减少了数据包的开销。

三、webSocket工作原理

 

  • 握手

    • 客户端通过 HTTP 请求发起 WebSocket 握手请求。请求中包含 Upgrade 头信息,表示希望将连接升级为 WebSocket 连接。
    • 服务器接受请求并返回一个响应,包含 Upgrade 头信息,确认升级。
  • 数据传输

    • 握手完成后,客户端和服务器之间可以通过 WebSocket 连接交换数据。数据以帧的形式传输,每个帧包含消息的一部分。
  • 关闭连接

    • 任一方(客户端或服务器)可以随时发送关闭帧来终止连接。

四、webSocket握手示例

客户端请求

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

服务器响应:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

五、使用webSocket的一个示例

以下是一个使用 JavaScript 在浏览器中建立 WebSocket 连接的简单示例:

<!DOCTYPE html>
<html>
<head>
  <title>WebSocket Example</title>
</head>
<body>
  <script>
    // 创建 WebSocket 连接
    var socket = new WebSocket('ws://localhost:8080');

    // 连接建立时触发
    socket.onopen = function(event) {
      console.log('WebSocket is open now.');
      socket.send('Hello Server!');
    };

    // 接收到消息时触发
    socket.onmessage = function(event) {
      console.log('Message from server: ' + event.data);
    };

    // 连接关闭时触发
    socket.onclose = function(event) {
      console.log('WebSocket is closed now.');
    };

    // 发生错误时触发
    socket.onerror = function(error) {
      console.error('WebSocket Error: ' + error);
    };
  </script>
</body>
</html>

六、应用场景

WebSocket 提供了一种高效、实时的双向通信机制,非常适合需要低延迟和高频次数据传输的应用。

  • 实时聊天应用
    • 如即时通讯工具、聊天机器人等。
  • 实时数据推送
    • 如股票市场数据、在线游戏状态同步等。
  • 协作工具
    • 如多人编辑文档、实时白板等。
  • 物联网(IoT)
    • 设备之间的实时数据交换。

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

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

相关文章

进度条提示-在python程序中使用避免我误以为挂掉了

使用库tqdm 你还可以手写一点&#xff0c;反正只要是输出点什么东西都可以&#xff1b; Demo from chatgpt import time from tqdm import tqdm# 示例函数&#xff0c;模拟长时间运行的任务 def long_running_task():total_steps 100for step in tqdm(range(total_steps), …

平安养老险安徽分公司“7·8保险宣传”走进企业

近日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;安徽分公司以“78全国公众宣传日”“保险&#xff0c;让每一步前行更有底气”为主题&#xff0c;走进某大型企业开展消费者权益保护专题教育宣传活动。 本次活动旨在向企业员工普及金…

【AI技术的未来之路】从模型到应用,跨越超级应用陷阱,迈向个性化智能体

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 ​ 目录 引言 一、AI技术应用场景探索&#xff1a; 二、避免超级应用陷阱的策略&#xff1a; 三、个…

windows驱动开发基础-环境篇

前言 Windows上无论是用户模式下还是内核模式下&#xff0c;有关驱动的开发都有可能影响系统稳定性&#xff0c;所以我们首先要准备一个专用的测试环境&#xff0c;可以使用VM等虚拟机方便环境修复和还原 测试模式 开启测试模式&#xff1a;cmd 命令 bcdedit /set testsign…

Websocket 替代方案:如何使用 Firestore 监听实时事件

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 ​在现代 Web 开发中,实时更新功能对于许多应用程序(如聊天应用、协作工具和在线游戏)都是必不可少的。虽然 WebSocket 是一种常用的实时通信技术,但 Google 的 Firestore 也提供了一种强大的替代方案,使得实时监听变得…

苍穹外卖前后端搭建

文章目录 参考开发环境搭建前端环境搭建1、 前端工程基于 nginx2、启动nginx,访问测试后端环境搭建1、从资料中找到后端初始工程:2、用 IDEA 打开初始工程,了解项目的整体结构:数据库环境搭建前后端联调nginx反向代理和负载均衡1、nginx反向代理2、nginx 负载均衡完善登录功…

线程交互现象

线程交互现象 小明对自家的狗子有个规定&#xff0c;就是在狗狗还没吃完的时候&#xff0c;可以继续给他加饭 不好的解决方式 狗狗感觉一千年没吃饭了&#xff0c;狼吞虎咽起来&#xff0c;最后饭只剩下最后一点点&#xff0c;吃饭线程中使用while循环判断是否是1&#xff0c;…

数字人直播时代来了!数字人直播系统搭建,AI虚拟数字人直播系统源码部署

数字人直播系统这是一种利用人工智能技术&#xff0c;实现自动化生成真实人物直播销售商品的综合性解决方案。 一、目前数字人直播支持的平台&#xff1a; 抖音、快手、视频号、小红书、淘宝、支付宝生活号、TikTok、阿里国际站等。 技术栈 数据库&#xff1a;mysql5.7 技术搭…

第一个ffmpeg程序

在进行使用ffmpeg进行编写程序时&#xff0c;首先要记得进行注册设备&#xff08;avdevice_register_all &#xff09;&#xff0c;程序运行时&#xff0c;只需要注册一次就可以 avdevice_register_all 是 FFmpeg 多媒体处理库中的一个函数&#xff0c;其作用是注册所有可用的音…

仕考网:公务员体检对视力有要求吗?

公务员招聘过程中的体检标准对视力有具体要求&#xff0c;根据不同的岗位职责有所差异。通常情况下&#xff0c;如果申请者双眼经过矫正后视力均低于4.8(小数视力0.6)&#xff0c;则会被视为不合格。 对于某些特殊岗位&#xff0c;如J察等&#xff0c;单侧裸眼视力若低于4.8也…

非升即走保命刊:审稿速度堪比“水刊”的1区Top,国人优势大,无爆雷风险,2个月可录!

本周投稿推荐 SCI • 地质遥感类&#xff0c;1.0-2.0&#xff08;34天沾边可录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…

输入框只能输入数字

type"number" <el-input type"number" v-model.number"expenditure" placeholder"请输入"> </el-input> /* 普通IE浏览器 样式清除 */ input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {-webkit-a…

大模型备案全网最详细流程说明【附附件】

下图为最新的直至第五批深度合成服务算法备案信息的公告 根据目前公开的国内大模型算法备案统计来看&#xff0c;首批境内深度合成服务算法备案清单&#xff0c;总共通过了五批。 以第二批举例&#xff0c;境内深度合成服务算法备案清单&#xff0c;总共通过110家&…

如何将overleaf的latex格式转换为word

安装pandoc https://pandoc.org/installing.html 下载安装后&#xff0c;打开windows shell&#xff0c;测试是否安装成功&#xff1a; pandoc -v使用代码转换 进入你防止latex的文件夹&#xff0c;运行以下命令&#xff1a; pandoc -o output.docx -t docx .\main.tex其中…

Java基础之Stringjoiner

Stringjioiner的概述 StringJoiner跟StringBuilder一样&#xff0c;也可以看成是一个容器&#xff0c;创建之后里面的内容是可变的。作用:提高字符串的操作效率&#xff0c;而且代码编写特别简洁&#xff0c;但是目前市场上很少有人用。 Stringjoiner的构造方法 Stringjoiner…

python源码分享:视频srt字幕文件生成

前言 最近有个项目需要使用srt字幕&#xff0c;我通过数分钟了解了它&#xff0c;并快速使用python完成了这一功能&#xff0c;现在分享此源码&#xff1a; 1、已知目标时间段的srt弹幕文件生成 2、自动识别视频的最后五秒钟&#xff0c;并添加提示弹幕 已知目标时间段的srt弹幕…

使用各向异性滤波器和图像处理方法进行脑肿瘤检测(MATLAB)

医学图像分割一直以来都是计算机辅助诊断领域的研究热点。在医学图像的处理和分析中&#xff0c;对图像中感兴趣区域的准确分割尤其关键。要对感兴趣区域进行分类识别&#xff0c;首先要从图像中把感兴趣区域精确分割出来&#xff0c;然后有针对性地对感兴趣区域提取特征并分类…

文心一言 VS 讯飞星火 VS chatgpt (299)-- 算法导论22.1 3题

三、有向图 G ( V , E ) G(V,E) G(V,E) 的转置是图 G T ( V , E T ) G^{T} (V,E^{T}) GT(V,ET)&#xff0c;这里 E T { ( v , u ) ∈ V V E^{T} \{(v,u)∈ V \times V ET{(v,u)∈VV:(u,v)∈ E}$因此&#xff0c;图 G T G^{T} GT 就是将有向图 G G G中所有边的方向反过来…

PostgreSQL 如何解决数据迁移过程中的数据类型不匹配问题?

文章目录 一、了解常见的数据类型不匹配情况1. 整数类型差异2. 浮点数类型差异3. 字符类型差异4. 日期和时间类型差异 二、解决数据类型不匹配的一般策略1. 数据转换2. 调整数据库表结构3. 数据清洗和预处理 三、PostgreSQL 中的数据类型转换函数1. 数值类型转换2. 字符类型转换…

第17章 潜在语义分析:奇异值分解、非负矩阵分解及课后习题

1.单词向量空间模型通过单词的向量表示文本的语义内容。以单词-文本矩阵 X X X为输入&#xff0c;其中每一行对应一个单词&#xff0c;每一列对应一个文本&#xff0c;每一个元素表示单词在文本中的频数或权值&#xff08;如TF-IDF&#xff09; X [ x 11 x 12 ⋯ x 1 n x 21 …