H5 WebSocket

news/2025/1/9 13:40:07/

  1 /**
  2             H5 Websocket
  3             http请求只能客户端单方便向服务器请求发送数据 短连接 轮询又太浪费资源
  4             websocket 实现全双通 长连接 用于前后端频繁交互的场景
  5 
  6             其他特点包括:
  7             (1)建立在 TCP 协议之上,服务器端的实现比较容易。
  8 
  9             (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
 10 
 11             (3)数据格式比较轻量,性能开销小,通信高效。
 12 
 13             (4)可以发送文本,也可以发送二进制数据。
 14 
 15             (5)没有同源限制,客户端可以与任意服务器通信。
 16 
 17             (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
 18 
 19          */
 20 
 21         //创建WebScoket实例
 22         var ws = new WebSocket("wss://echo.websocket.org");
 23         //执行上面语句之后,客户端就会与服务端进行连接.
 24 
 25         /**
 26         ws.readyState 查看连接状态:
 27             CONNECTING: 值为0,表示正在连接。
 28             OPEN: 值为1,表示连接成功,可以通信了。
 29             CLOSING: 值为2,表示连接正在关闭。
 30             CLOSED: 值为3,表示连接已经关闭,或者打开连接失败。
 31          */
 32         console.log(ws.readyState);//0
 33 
 34 
 35         //实例对象的onopen属性,用于指定连接成功后的回调函数。
 36         ws.onopen = function()
 37         {
 38             console.log("connect socket...");
 39             console.log(ws.readyState);//1
 40 
 41             // 实例对象的send()方法用于向服务器发送数据。
 42             ws.send("send message");
 43         }
 44         //如果要指定多个回调函数,可以使用addEventListener方法。
 45         ws.addEventListener('open',function(){
 46             console.log("connect socket...");
 47             console.log(ws.readyState);//1
 48             ws.send("send message");
 49         });
 50 
 51 
 52         //实例对象的onmessage属性,用于指定收到服务器数据后的回调函数。
 53         ws.onmessage = function(evt)
 54         {
 55             console.log("message:" + evt.data);
 56             ws.close();
 57             console.log(ws.readyState);//2
 58         }
 59         
 60         
 61         //实例对象的onclose属性,用于指定连接关闭后的回调函数。
 62         ws.onclose = function()
 63         {
 64             console.log("socket close!");
 65             console.log(ws.readyState);//3
 66         }
 67         ws.addEventListener('close',function(){
 68             console.log("socket close!");
 69         });
 70 
 71 
 72         //实例对象的onerror属性,用于指定报错时的回调函数。
 73         ws.onerror = function()
 74         {
 75             console.log("socket error!");
 76         }
 77         ws.addEventListener('error',function(){
 78             console.log("socket error!");
 79         });
 80 
 81 
 82 
 83 
 84         //总结:实现连接其实就下面简单的几步
 85         var ws = new WebSocket("wss://echo.websocket.org");
 86         console.log(ws.readyState);
 87         ws.onopen = function()
 88         {
 89             console.log("已连接socket!");
 90             console.log(ws.readyState);
 91             ws.send("这是发送的消息...");
 92         }
 93 
 94         ws.onmessage = function(evt)
 95         {
 96             console.log("这是接收的信息:" + evt.data);
 97             ws.close();//关闭链接
 98             console.log(ws.readyState);
 99         }
100 
101         ws.onclose = function(evt)
102         {
103             console.log("连接已关闭!");
104             console.log(ws.readyState);
105         }


http://www.ppmy.cn/news/4509.html

相关文章

Maven

一、maven介绍 传统web项目源码大小一般都有几十兆(包含jar),如果项目中有使用到maven,那么项目只有几百k(只算源码)。 maven的优势: 1、依赖管理 就是对jar 包管理的过程。 2、项目的一键构建 (编译-----测试-----运行-----打包-----安装&…

基于FPGA的64点fft变换verilog开发

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散…

C语言重点解剖关键字要点速记

1.在windows中,双击的本质是运行该程序,就是将程序(.exe)加载到内存当中去。任何程序在被运行之前都必须加载到内存当中去。 2.所有的变量本质都是在内存的某个位置开辟的。变量不能定义在硬盘上,因为变量必须在程序运行的时候才能被开辟&am…

搜索与图论 - spfa 算法

文章目录一、spfa 算法1. spfa 算法简介2. spfa 算法和 bellman-ford 算法的区别3. spfa 算法和 dijkstra 算法的区别4. spfa 算法实现步骤5. spfa 算法举例图解6. spfa 算法用于求最短路和判断负环,详见下面两道例题。二、spfa 算法例题—— spfa 求最短路具体实现…

圣诞树-python绘制雪夜圣诞树并封装为小程序

绘制雪夜圣诞树并封装为小程序 使用turtle绘制一颗雪夜圣诞树,然后封装成exe小程序送给你的朋友吧! PS:只能在windows运行。 转载注明本文链接和作者 先看效果图: 绘制雪夜圣诞树 由于代码有三百多行,我放在下面的两…

Linux系统中DDR3硬件初始化实验

大家好,我是ST。 今天的话,主要和大家聊一聊,如何使用Cortex-A芯片自带的RAM,很多时候要运行Linux的话是完全不够用的,必须要外接一片RAM芯片,驱动开发板上的DDR3。 目录 第一:何为RAM和ROM …

CS61A Lab 8

更好的阅读体验 Lab 8: Midterm Review lab08.zip Due by 11:59pm on Wednesday, March 16. Starter Files Download lab08.zip. Inside the archive, you will find starter files for the questions in this lab, along with a copy of the Ok autograder. Topics Cons…

华为网工入门之eNSP小实验(5)--VLAN间相互通信的三种方法

VLAN间相互通信 实际网络部署中一般会将不同IP地址段划分到不同的VLAN。同VLAN且同网段的PC之间可直接进行通信,无需借助三层转发设备,该通信方式被称为二层通信。VLAN之间需要通过三层通信实现互访,三层通信需借助三层设备(路由器,三层交换…