小程序中的webSocket介绍以及使用

2023-10-27

什么是 webStoket?

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。

HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。

在这里插入图片描述
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。

当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

通信原理

当客户端要和服务端建立 WebSocket 连接时,在客户端和服务器的握手过程中,客户端首先会向服务端发送一个 HTTP 请求,包含一个 Upgrade 请求头来告知服务端客户端想要建立一个 WebSocket 连接。

创建

首先创建一个空文件夹 ,里面创建一个 JS 文件,在文件夹中打开 cmd,输入命令:

npm i
npm i ws

在 js文件中编写

引入

// webSocket/index.js

// 首先引入webSocket,创建一个服务器
let Ws = require("ws").Server;
// 设置端口号
let wss = new Ws({
  port: 8282
})

建立连接并接收

// 监听是否有连接 接入
wss.on("connection", function (ws) {
  console.log("有连接");
  // 前端发过来的消息
  ws.on("message", res => {
    console.log(JSON.parse(res));
    // 发送数据
    ws.send(JSON.stringify({ name: "张三" }));
  })
});

运行

cmd中输入命令 运行

nodemon index

在这里插入图片描述

小程序中使用

wxml文件中绑定个点击事件

<view>
  <button type="primary" bindtap="sendMessage">点击发送消息</button>
</view>

js文件

创建一个ws连接

// pages/text/text.js
wx.connectSocket({
    url: 'ws://localhost:8282',
})

在这里插入图片描述
cmd中可以看到 webSocket 中的消息连接成功了
在这里插入图片描述

监听是否连接

wx.onSocketOpen((result) => {
  console.log("连接成功");
})

在 小程序调试器中可以看到输出内容证明连接成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210623203019477.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NjY2ODM3,size_16,c olor_FFFFFF,t_70)

绑定的点击事件

sendMessage(){
    wx.sendSocketMessage({
      data: "some value...",
  })
}

监听收到的消息

wx.onSocketMessage((result) => {
  console.log(result);
})

总结

客户端和服务器端的 WebSocket 连接就建立起来,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。总的来说 ,webSocket 是应用层协议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序中的webSocket介绍以及使用 的相关文章

随机推荐

  • jboss源码中片段分析

    package com test import java security AccessController import java security PrivilegedAction import java util ArrayList
  • QRegExp

    d 非负整数 正整数 0 0 9 1 9 0 9 正整数 d 0 非正整数 负整数 0 0 9 1 9 0 9 负整数 d 整数 d d 非负浮点数 正浮点数 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1
  • post使用方法以及有道API

    import requests import json headers User Agent Mozilla 5 0 Windows NT 10 0 Win64 x64 AppleWebKit 537 36 KHTML like Gecko
  • Unity人物前进的方向和相机朝向一致

    鼠标点击滑动移动相机 代码 using UnityEngine using System Collections This is an improved orbit script based on the MouseOrbitImprove
  • 数据结构-图的应用算法

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 最小生成树 1 1 Prim算法 1 2 Kruskal算法 二 最短路径 2 1 Dijkstra算法 2 2 Floyd算法 三 有向无环图描述表达式 四
  • Angular 使用MockJs

    今天要做模拟数据 但是发现没有说这个问题的帖子 特此记录分享一下 如果有用Angular的朋友刚好遇到这个问题 希望可以帮你解决 第一步 安装mockjs npm install mockjs save 第二步 引入mockjs 在 ang
  • Python学习笔记(十三)————循环语句相关

    目录 1 while循环 2 for循环 3 range语句 4 while与for区别 5 循环中断 break和continue 1 while循环 1 while的条件需得到布尔类型 True表示继续循环 False表示结束循环 2
  • 「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验

    OceanBase 4 1 体验 OceanBase 4 1社区版的部署及使用体验 一 前言 1 1 本次实践介绍 1 2 本次实践目的 二 准备环境资源 2 1 部署前需准备工作 2 2 本地环境规划 三 部署Docker环境 3 1 安
  • 栈,堆,堆栈,队列

    堆栈都是一种数据项按序排列的数据结构 只能在一端 称为栈顶 top 对数据项进行插入和删除 要点 堆 顺序随意 栈 后进先出 Last In First Out 堆 什么是堆 又该怎么理解呢 堆通常是一个可以被看做一棵树的数组对象 堆总是满
  • ViewPager2 + SmartRefreshLayout + RecyclerView出现底部自动回弹显示问题,显示不全

    ViewPager2 SmartRefreshLayout RecyclerView出现底部自动回弹显示问题 显示不全 出现这个问题的原因是RecyclerView的高度超过了父控件的高度 我也不知道为啥 只是测试出来的结果 解决办法 pr
  • 【python基础知识】15.编码基础知识

    编码基础知识 前言 编码 二进制 编码表 encode 和decode 前言 在你的网络冲浪生涯里 我想你或多或少有这样的疑问 为什么传说中只能读懂0和1的计算机能显示如此五花八门的内容 为什么明明办的100兆的宽带 撑死就只有10几兆的下
  • ubuntu18.04 android studio无法使用中文输入法

    1 找到电脑安装的输入法框架 打开系统输入法 查看当前选择的输入法框架 这说明当前使用的是ibus 输入法框架 2 设置studio sh 使用输入法框架 在studio sh 的文件注释行下面 该文件的最前明 添加输入法 export X
  • iOS获取App ipa包 2019-02-12

    转自 https www jianshu com p 8eaa1dd20370 首先 去Mac上的App Store下载Apple Configurator 2 然后把iphone连接上Mac 点击Apple Configurator 2
  • 汽配企业WMS系统:提升作业效率与过程管控

    随着汽配企业竞争的加剧和业务模式的复杂化 许多企业意识到提高仓库作业效率和成本控制能力是企业成功的关键 因此 越来越多的企业选择引入WMS仓储管理系统 然而 汽配企业产品复杂 且从业的人员大部分是老一辈人员 内部信息化程度低 因此需要建立更
  • 代码随想录算法训练营第一天

    LeetCode704 力扣 基础二分法 考虑如何不让数据溢出 区间如何切换 LeetCode34 力扣寻找最左区间 和 最右区间 套路和基础二分法类似 就是要在找到target的时候继续向左或者向右移动 package algor tra
  • Matlab绘制折线图及局部放大图

    Matlab可完成折线图绘制及局部放大 需下载 MATLAB 交互式的局部放大图 知乎 代码开源 非常好用 十分感谢 需求 如下图所示 一 仅绘制折线图 代码如下 x 1 10 x轴上的数据 开始 终止值 a 12008 68032 171
  • Java手写LinkedList和拓展

    Java手写LinkedList和拓展 思维导图 mermaid svg K0RTlFFvnikDRvqp font family trebuchet ms verdana arial sans serif font size 16px f
  • 部署农产品溯源系统的步骤

    系统模块和技术 此系统有四个模块 blockchain trace bcnetwork blockchain trace applets blockchain trace pc blockchain trace basic data 本系统
  • [YOLO专题-4]:YOLO V1 - 网络结构、原理、基本思想的全新、全面、通俗、结构化讲解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122156426 目录 第1章 YOL
  • 小程序中的webSocket介绍以及使用

    什么是 webStoket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据 在 WebSocke