当前位置: 首页 > news >正文

前端uni微信小程序和后端nodejs使用websoket

需求

前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。

思路

后端生成验证码时存入用户的唯一Id和ip,前端获取到验证码后,与后台建立 WebSocket 连接,然后游戏端填入验证码向后端接口发起请求,遍历整个clients列表,与数据库中的ip进行匹配,向匹配的ip发送消息。由于可能存在不同客户端Ip相同的情况,这里则需要根据唯一ID进行区分

代码

前端
// 建立 WebSocket 连接const socket = uni.connectSocket({url: 'wss://xxxx.com:8889',success() {console.log("ws连接成功!");},fail() {console.log("ws连接失败!");},});
//监听WebSocket接收消息事件socket.onMessage((message)=>{console.log('监听WebSocket接收消息事件',message.data);const data = JSON.parse(message.data)if(data.type == 'invalid'){uni.showToast({title: '无效验证码',duration: 2000,icon:'none'});}else{if(data.openid == this.userOpenid){if(data.result=='绑定成功'){uni.showToast({title: "绑定成功",icon:'success',duration:1500,complete: () => {//在这里执行跳转操作setTimeout(()=>{uni.switchTab({url:'/pages/index/index'})},1500)}})uni.closeSocket({success() {console.log("WebSocket连接已关闭");},fail() {console.log("关闭WebSocket连接失败");},});}else{uni.showToast({title: '绑定失败',duration: 2000,icon:'none'});}}}})
后端
//app
const WebSocket = require('ws')
const wss = new WebSocket.Server({server:httpsServer},()=>{console.log('socket start');}
)
// 将wss对象挂载到全局对象global上,在其他页面使用global.wss访问
global.wss = wss//接口
exist(){//.....// 向前端小程序发送绑定结果global.wss.clients.forEach((client) => {//ip客户端IP地址const ip = client._socket.remoteAddress ||          client.upgradeReq.connection.remoteAddress;console.log('客户端IP地址:', ip,secretIp);if(ip==secretIp){client.send(JSON.stringify({openid: secretOpenid,result: '绑定成功',}));}});//.....}

记录一下。。。。

相关文章:

前端uni微信小程序和后端nodejs使用websoket

需求 前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。 思路 后端生成验证码时存…...

java小游戏之【王者荣耀】

首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 代码 package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {p…...

QT网络协议知识体系(一)

//获取主机的名称和ip地址 //获取主机的所有信息...

【数据库】表的连接在执行时的算法解析,嵌套循环连接算法的几种实现,多表连接中表的数量会影响什么

嵌套循环连接 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新…...

【刷新:重新发现商业与未来】书笔记

收获 同理心:站在他人角度考虑他人感受,他人需要什么,我能提供什么;他人可以是员工,家人等;对于员工来讲核心四件事:1、薪水;2、有结果;3、有成长;4、工作开…...

Lua实现面向对象三大特性

面向对象是基于table实现的 封装 :(冒号) 自动将调用该函数的对象作为第一个参数传入 --Object就是第一参数 function Object:new() self:代表默认传入的第一个参数 _index:当自己的变量中找不到时,会默认找原表中_index指向的内容 Obj…...

竞赛python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…...

C#结合JavaScript实现上传视频到腾讯云点播平台

目录 需求 关键代码 界面元素布局 C# 实现服务端的签名类 上传视频的JS实现 视频演示 小结 需求 在云培训系统里,制作视频课件是我们的主要工作之一,制作完成后如果将这些素材存储到服务器并进行分发播放,是摆在我们面前的一个问题。…...

简单介绍一下js中的构造函数、原型对象prototype、对象原型__proto__、原型链

构造函数 function Star (uname, age){this.uname unamethis.age agethis.sing function(){ log(唱歌~) }}let xzq new Star(薛之谦, 30)let ldh new Star(刘德华, 20)log(ldh) // { uname: 刘德华, age: 20, sing: f }ldh.sing() // 唱歌~log(ldh.sing xzq.sing) // fal…...

Java基于springboot+vue开发服装商城小程序

演示视频: 小程序 https://www.bilibili.com/video/BV1rM411o7m4/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 管理员 https://www.bilibili.com/video/BV1fc411D7V3/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae…...

设计模式之十二:复合模式

模式通常被一起使用,并被组合在同一个解决方案中。 复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 首先重新构建鸭子模拟器: package headfirst.designpatterns.combining.ducks;public interface Quackable …...

java通过年月获取当前月所有周(跨月),获取每周开始日期和结束日期

/*** 根据年月返回本月共几周&#xff0c;每周开始与结束日期*/public static List<Map<String, String>> queryWeek(String year, String month) throws ParseException {/** 周 **/final String[] weeks { "第一周", "第二周", "第…...

9.3 Windows驱动开发:内核解析PE结构节表

在笔者上一篇文章《内核解析PE结构导出表》介绍了如何解析内存导出表结构&#xff0c;本章将继续延申实现解析PE结构的PE头&#xff0c;PE节表等数据&#xff0c;总体而言内核中解析PE结构与应用层没什么不同&#xff0c;在上一篇文章中LyShark封装实现了KernelMapFile()内存映…...

Zephyr:Direct Distillation of LM Alignment

Zephyr&#xff1a;Direct Distillation ofLM Alignment IntroductionMethod Introduction dSFT已经被可以提升模型的指令遵循能力的准确性&#xff0c;但是student model 不会超过 teacher model。 作者认为 dSFT虽然可以让模型更好的理解用户意图&#xff0c;但是无法与人类…...

二叉树--算法题总结

1、利用层序遍历的产生的字符串来创建二叉树 /*** 使用层序遍历的字符串创建二叉树* param treeInfo* return*/public static TreeNode generateTreeNodeSecond(String treeInfo) {LinkedList<TreeNode> treeNodeLinkedList new LinkedList<>();if(StringUtils.is…...

PyQt6 QLabel标签控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计21条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…...

即时通讯技术文集(第24期):音视频WebRTC好文合集 [共20篇]

为了更好地分类阅读 52im.net 总计1000多篇精编文章&#xff0c;我将在每周三推送新的一期技术文集&#xff0c;本次是第 24 期。 [- 1 -] 开源实时音视频技术WebRTC的现状 [链接] http://www.52im.net/article-126-1.html [摘要] 作为Google开源的技术&#xff0c;WebRTC并不…...

HTML+CSS+JS网页设计与制作摄影类个人网页

可以使用网页三剑客htmlcssjs实现网页设计与制作&#xff0c;页面排版布局高端大气。 使用HTMLCSS页面布局设计&#xff0c;HTMLCSSJS网页设计与制作摄影类个人网页&#xff0c;这是一个优质的个人网页制作。 凭借简约的设计风格、精湛的制作工艺&#xff0c;突破与创新的理念…...

U-boot(五):启动内核

本文主要探讨210的uboot启动内核过程。 嵌入式系统状态启动 未上电时bootloader、kernel、rootfs以镜像形式存储在启动介质中(X210为iNand/SD卡),运行时搬运到DDR中 未上电时u-boot.bin,zImage,rootfs在SD卡中各自对应的分区中,启动时去对应分区寻找(分区表一…...

tp8 使用rabbitMQ(2)工作队列

代码的参数说明在 第一小节的代码中&#xff0c;如果需要可移步到第一节中查看 工作队列 工作队列&#xff08;又称&#xff1a;任务队列——Task Queues&#xff09;是为了避免等待一些占用大量资源、时间的操作。当我们把任务&#xff08;Task&#xff09;当作消息发送到队列…...

如何快速构建专业GitHub个人主页:GitHub Profile README Generator的终极表单验证指南

如何快速构建专业GitHub个人主页&#xff1a;GitHub Profile README Generator的终极表单验证指南 【免费下载链接】github-profile-readme-generator &#x1f680; Generate GitHub profile README easily with the latest add-ons like visitors count, GitHub stats, etc u…...

我用 AI 辅助开发了一系列小工具():文件提取工具对

从0构建WAV文件&#xff1a;读懂计算机文件的本质 虽然接触计算机有一段时间了&#xff0c;但是我的视野一直局限于一个较小的范围之内&#xff0c;往往只能看到于算法竞赛相关的内容&#xff0c;计算机各种文件在我看来十分复杂&#xff0c;认为构建他们并能达到目的是一件困难…...

BIThesis 3.7.0:北京理工大学研究生学位论文模板的完整专业解决方案

BIThesis 3.7.0&#xff1a;北京理工大学研究生学位论文模板的完整专业解决方案 【免费下载链接】BIThesis &#x1f4d6; 北京理工大学非官方 LaTeX 模板集合&#xff0c;包含本科、研究生毕业设计模板及更多。&#x1f389; &#xff08;更多文档请访问 wiki 和 release 中的…...

【chrony】从原理到实战:构建高精度企业级时间同步服务

1. 为什么企业需要高精度时间同步 想象一下这样的场景&#xff1a;证券交易所里&#xff0c;一笔价值上亿的交易因为两台服务器的时间差0.1秒而被系统判定为无效&#xff1b;医院的手术室里&#xff0c;来自不同设备的生命体征监测数据因为时间不同步而无法准确关联&#xff1…...

1979年11月3日晚上21-23点出生性格、运势和命运

在1979年11月3日晚上21 - 23点出生之人&#xff0c;其性格往往有着独特的烙印。这个时间段出生的人&#xff0c;性格多沉稳内敛&#xff0c;有着自己的思考方式和行事准则。他们通常具备较强的观察力&#xff0c;能敏锐地察觉到周围环境的细微变化&#xff0c;在与人交往中&…...

Qwen3-ForcedAligner-0.6B实战案例:为有声书文本生成逐句播放控制时间轴

Qwen3-ForcedAligner-0.6B实战案例&#xff1a;为有声书文本生成逐句播放控制时间轴 1. 项目背景与需求场景 有声书制作过程中&#xff0c;一个常见但繁琐的任务是为音频内容生成精确的时间轴信息。传统方法需要人工反复听录音&#xff0c;手动标记每个句子或词语的开始和结束…...

终极指南:Tectonic引擎中的现代字体处理技术详解

终极指南&#xff1a;Tectonic引擎中的现代字体处理技术详解 【免费下载链接】tectonic A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive. 项目地址: https://gitcode.com/gh_mirrors/te/tectonic Tectonic作为一款现代化的TeX…...

终极Walkway.js进阶教程:掌握复杂交互动画与响应式设计的完整指南

终极Walkway.js进阶教程&#xff1a;掌握复杂交互动画与响应式设计的完整指南 【免费下载链接】walkway An easy way to animate SVG elements. 项目地址: https://gitcode.com/gh_mirrors/wa/walkway Walkway.js是一款轻量级的SVG动画库&#xff0c;让开发者能够轻松为…...

高效金融数据采集架构:Python通达信数据获取解决方案深度解析

高效金融数据采集架构&#xff1a;Python通达信数据获取解决方案深度解析 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资和金融数据分析领域&#xff0c;获取准确、实时的市场数据是策…...

两周狂揽 44,000+ Star!GitHub 这个神仙项目,彻底治好了 AI 的“直男审美”。

把 Stripe、Vercel、Linear 的设计直接喂给 AI&#xff0c;两周 43k Star 的神仙项目上周我在刷 GitHub Trending 的时候&#xff0c;被一个项目整懵了——两周&#xff0c;43,982 颗 Star。这个速度放在任何一个仓库都是炸裂的。我点进去看&#xff0c;发现这东西的思路简单到…...