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

写文思路:

以下主要从几个方面着手写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.mfbz.cn/a/788867.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【安全设备】堡垒机

一、什么是堡垒机 安全运维审计与风险控制系统即堡垒机&#xff0c;前身为跳板机&#xff0c;跳板机是一个简单的管理设备&#xff0c;但缺乏对运维操作的控制和审计能力。堡垒机是一种特定的网络安全设备&#xff0c;用于在一个网络环境中保护数据和网络不受外部和内部用户的…

k8s record 20240708

一、PaaS 云平台 web界面 资源利用查看 Rancher 5台 CPU 4核 Mem 4g 100g的机器 映射的目录是指docker重启后&#xff0c;数据还在 Rancher可以创建集群也可以托管已有集群 先docker 部署 Rancher&#xff0c;然后通过 Rancher 部署 k8s 想使用 kubectl 还要yum install 安…

深度分析:智算中心建设 - GPU选型

大模型加持AI技术赛道革新发展&#xff0c;“大模型热”愈演愈烈。2024年2月15日&#xff0c;OpenAI首个视频生成模型Sora发布&#xff0c;完美继承DALLE 3的画质和遵循指令能力&#xff0c;能生成长达1分钟全尺寸的高清视频。2024年5月14日&#xff0c;OpenAI发布GPT-4o&#…

comsol达西定律的小例子

comsol达西定律的小例子

clean code-代码整洁之道 阅读笔记(第十七章 终章)

大纲 第十七章 味道与启发 17.1 注释 C1&#xff1a;不恰当的信息 C2&#xff1a;废弃的注释 C3&#xff1a;冗余注释 C4&#xff1a;糟糕的注释 C5&#xff1a;注释掉的代码 17.2 环境 E1&#xff1a;需要多步才能实现的构建 E2&#xff1a;需要多步才能做到的测试 …

computed传参

目录 一、问题 二、解决方法 三、总结 tiips:如嫌繁琐&#xff0c;直接移步总结即可&#xff01; 一、问题 computed可以依据其他变量动态计算出值&#xff0c;但是v-for渲染html时&#xff0c;需要根据html中 传入的不同变量&#xff0c;来分别做处理或者利用 html中的值该…

node+vue的仿网易云音乐网站-计算机毕业设计源码02905

摘要 本论文基于Node.js和Vue.js技术&#xff0c;以仿网易云音乐网站为目标&#xff0c;设计并实现了一个具有音乐播放、歌曲搜索、歌单推荐等功能的音乐网站。首先&#xff0c;论文介绍了网易云音乐网站的特点和功能&#xff0c;分析了其前端和后端技术栈&#xff0c;为后续设…

CTFShow的36D杯

神光 还是想了一下&#xff0c;但那个异或搞不出来&#xff0c;都是对dword_41A038操作&#xff0c;想起开头就给了 key &#xff0c;还有反调试应该是要调试的 输出的应该就是 flag &#xff0c;只是为什么是乱码呢&#xff1f; 放 od 再试试&#xff0c;直接就出 flag 了&am…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

iPhone数据恢复篇:iPhone 数据恢复软件有哪些

问题&#xff1a;iPhone 15 最好的免费恢复软件是什么&#xff1f;我一直在寻找一个恢复程序来恢复从iPhone中意外删除的照片&#xff0c;联系人和消息&#xff0c;但是我有很多选择。 谷歌一下&#xff0c;你会发现许多付费或免费的iPhone数据恢复工具&#xff0c;声称它们可…

[C++]——同步异步日志系统(3)

同步异步日志系统 一、日志系统框架设计1.1模块划分1.1.1 日志等级模块1.1.2 日志消息模块1.1.3 日志消息格式化模块1.1.4 日志落地模块&#xff08;日志落地的方向是工厂模式&#xff09;1.1.5 日志器模块&#xff08;日志器的生成是建造者模式&#xff09;1.1.6 异步线程模块…

【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输

前提 发送发发送数据时&#xff0c;需要给出一个seq编号。第一个数据包的seq编号是一个随机数&#xff0c; 从第二个开始&#xff0c;seq编号就是【第一次的seq数据包大小】&#xff0c; 即接收方响应过来的期待数据包编号 ACK机制 接收方收到数据后&#xff0c;要给发送方回…

Html5前端基本知识整理与回顾下篇

今天我们继续结合发布的Html5基础知识点文档进行复习&#xff0c;希望对大家有所帮助。 目录 列表 无需列表 有序列表 自定义列表 样例 表格 基本属性 ​编辑 相关属性 Border Width Height ​编辑 表格标题 ​编辑 表格单元头 合并单元格 垂直单元格合并 水…

实践致知第12享:如何新建一个Word并设置格式

一、背景需求 小姑电话说&#xff1a;要新建一个Word文档&#xff0c;并将每段的首行设置空2格。 二、解决方案 1、在电脑桌面上空白地方&#xff0c;点击鼠标右键&#xff0c;在下拉的功能框中选择“DOC文档”或“DOCX文档”都可以&#xff0c;如下图所示。 之后&#xff0…

npm install失败,数据源过期

npm install时报错&#xff1a;“Unexpected token &#xff1c; in JSON at position 0 while parsing near ‘&#xff1c;!DOCTYPE html&#xff1e;” 执行Vue2项目安装时&#xff0c;出现报错了&#xff0c;显示ERROr: **npm ERR! Unexpected token < in JSON at posi…

58、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1&#xff09;原理简介 基于径向基神经网络&#xff08;Radial Basis Function Neural Network, RBFNN&#xff09;的曲线拟合是一种常用的非线性拟合方法&#xff0c;通过在输入空间中使用径向基函数对数据进行处理&#xff0c;实…

cesium 雷达扫描

cesium 雷达扫描 (下面附有源码) 实现思路 1、通过改变圆型材质来实现效果, 2、用了模运算和步进函数(step)来创建一个重复的圆形图案 3、当纹理坐标st落在垂直或水平的中心线上时,该代码将改变透明度和颜色,以突出显示这些线 示例代码 <!DOCTYPE html> <ht…

完美解决windows开机时,系统提示此windows副本不是正版的正确解决方法,亲测有效!!!

完美解决windows开机时&#xff0c;系统提示此windows副本不是正版的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决windows开机时&#xff0c;系统提示此windows副本不是正版的正确解决方法&#xff0c;亲测有效&#xff01;&#…

二分查找3

1. 有序数组中的单一元素&#xff08;540&#xff09; 题目描述&#xff1a; 算法原理&#xff1a; 二分查找解题关键就在于去找到数组的二段性&#xff0c;这里数组的二段性是从单个数字a开始出现然后分隔出来的&#xff0c;如果mid落入左半部分那么当mid为偶数时nums[mid1]…

来聊聊Redis持久化AOF管道通信的设计

写在文章开头 最近遇到很多烦心事&#xff0c;希望通过技术来得以放松&#xff0c;今天这篇文章笔者希望会通过源码的方式分析一下AOF如何通过Linux父子进程管道通信的方式保证进行AOF异步重写时还能实时接收用户处理的指令生成的AOF字符串&#xff0c;从而保证尽可能的可靠性…