微信小程序开发WebSocket通讯

  • 官方文档说明:入口

  • WebSocket连接的链接只支持wss加密方式,且只能用域名的方式

  • 该域名还要在微信公众平台的小程序中登记才能使用,开发->开发管理->服务器域名->修改
    在这里插入图片描述

  • 该域名要和https使用的一致

  • 以域名地址:dtu.aabbcc.cn为例

nodejs搭建WebSocket服务器

无需传入服务器地址,底层会自动映射到公网ip

const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 3000 });
consoles.log('WebSocket服务器已启动');

// 当有客户端连接时,监听其消息
server.on('connection', (client) => {
  consoles.log('有客户端连接:', client._socket.remoteAddress);
  // 收到客户端消息
  client.on('message', (data) => {
    try {
      const decoder = new TextDecoder();
      const text = decoder.decode(data);
      message = JSON.parse(text);
      consoles.log('收到客户端消息:', message);
   
    } catch (error) {
      consoles.log('wss message error', error)
    }
  });
  // 当客户端断开连接时,从客户端映射关系中删除
  client.on('close', () => {
    consoles.log('客户端断开连接:', client._socket.remoteAddress);
    clientsInforList.delete(client);
  });
});

WebSocket默认是不带加密传输的,接下来可以通过代理服务器配置路由进行加密传输,即ws变成wss。

Apache配置参数

系统:ubuntu
配置文件:

  • 加密路由配置:\etc\apache2\sites-enabled\default-ssl.conf
	<VirtualHost _default_:443>
		ServerName wss://dtu.aabbcc.cn
		ProxyPass /wss ws://localhost:3000
		ProxyPassReverse /wss ws://localhost:3000
	</VirtualHost>
  • 不加密路由配置:\etc\apache2\sites-enabled\000-default.conf
<VirtualHost *:80>
	ServerName ws://dtu.aabbcc.cn
	ProxyPass /wss ws://localhost:3000
	ProxyPassReverse /wss ws://localhost:3000
</VirtualHost>

修改完记得重启Apache

sudo service apache2 restart

微信小程序端连接

      wx.connectSocket({
        url: 'wss://dtu.aabbcc.cn/wss',
        header:{
          'content-type': 'application/json',
          'Access-Control-Allow-Origin': '*',
        },
        success: function (res) {
          console.log('WebSocket连接成功', res)
        },
        fail: function (res) {
          console.log('WebSocket连接失败:', res)
        }
      })
      
      wx.onSocketOpen(function() {
        console.log('WebSocket连接已打开')
        wx.sendSocketMessage({
          data: JSON.stringify({
            type: 'register'
            ,id: 'wx-23423453'
          })
        })
      })
      wx.onSocketError(function(res) {
        console.log('WebSocket连接打开失败:', res)
      })
      wx.onSocketMessage(function(res) {
        console.log('WebSocket onSocketMessage:', res)
        var data = JSON.parse(res.data)
      })
      wx.onSocketClose(function() {
        console.log('WebSocket连接已关闭')
      })

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

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

相关文章

2024年第02周农产品价格报告

一、摘要 农产品价格监测主要涉及对畜禽类产品、水产品、蔬菜类产品、水果类产品的价格&#xff0c;以周为单位&#xff0c;进行变化情况的数据监测。其中&#xff0c;蔬菜类产品共18种&#xff0c;分别为大白菜、西红柿、黄瓜、青椒、芹菜、土豆、白萝卜、茄子、豆角、胡萝卜…

华媒舍:高效率的新闻资讯新闻媒体宣发套餐内容推广计划方案

怎样让自己的新闻资讯可以被大众孰知&#xff0c;变成了每一个新闻媒体宣发者一同存在的困难。下面我们就给大家介绍一套高效率的新闻资讯新闻媒体宣发套餐内容推广计划方案&#xff0c;致力于帮助新闻媒体宣发者提升宣发高效率&#xff0c;提高新闻资讯的传播性。 1.新闻媒体宣…

如何通过内网穿透实现公网访问Portainer管理监控Docker容器

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风…

GoZero微服务个人探究之路(二)Go-Zero官方api demo示例探究

官方文档api-demo教程部分网址如下&#xff1a; api demo 代码生成 | go-zero Documentation 官方demo的架构如下&#xff1a; 编辑 etc包下&#xff1a; demo-api.yaml 编辑服务名称&#xff1a;demo-apiHOST地址&#xff1a;0.0.0.0监听所有可用网络接口Port地址&#…

XSKY助力首个云原生、分布式、全栈国产化银行核心系统投产上线

近日&#xff0c;。该项目是业内首个实际投产的云原生、分布式、全栈国产化的银行核心业务系统&#xff0c;是金融科技领域突破关键核心技术应用的重大实践。 在杭州银行的新一代核心系统中&#xff0c;XSKY星辰天合具备天合翔宇“一池多芯”技术的对象存储支持了核心业务模块…

每日一题 82. 删除排序链表中的重复元素 II(中等,链表)

和昨天差不多&#xff0c;今天的是把所有重复数字的节点都删除&#xff08;昨天留了一个&#xff09; 显然当我们发现重复数字时&#xff0c;需要重复的第一个数字的前一个节点才能把重复数字删完&#xff0c;所有在while循环中我们每次判断 t.next 和 t.next.next 的值是否重复…

AI模型理解误区:微调垂直行业-VS-企业专属知识库或AI助理

概述 企业定制私有化大模型的区别&#xff0c;分为训练大模型和调用大模型两种方向&#xff0c;以及企业自己的智能客服的实现方法。 - 企业定制的私有化大模型与一般的大模型不同&#xff0c;需要高成本训练。- 企业可以选择调用已经训练好的大模型来应用。- 企业可以使用向量…

Zabbix监控(1)

目录 一.什么是zabbix Zabbix 组件&#xff1a; 主动模式&#xff1a; 被动模式&#xff1a; Zabbix 工作原理&#xff1a; zabbix 监控原理&#xff1a; 二.Zabbix 6.0 部署 先安装nginx&#xff0c;php&#xff08;yum源安装&#xff09;&#xff1a; 安装nginx&…

【面试突击】Java内存模型实战

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

python的包argparse介绍

argparse是一个用来解析命令行参数的 Python 库&#xff0c;它是 Python 标准库的一部分。 1、未使用argparse: import math# 计算圆柱体的体积 def cal_vol(radius,height):vol math.pi * pow(radius,2) * heightreturn vol if __name____main__:print(cal_vol(2,4))2、使用…

Model:字符串列表模型QStringListModel

一、QStringListModel &#xff08;1&#xff09;功能&#xff1a;处理字符串列表的数据模型&#xff0c;可作为QListView的数据模型&#xff0c;在界面上显示和编辑字符串列表。 二、QStringListModel 类中的函数 1)、 QStringListModel(QObject *parent Q_NULLPTR) //构造函…

FairyGUI Day 1 导入FairyGUI

FairyGUI Unity3d引擎版本&#xff1a;Uinty3d 20233.2.3f1 1、从资产商店中将FairyGUI购入我的资产中&#xff0c;目前是免费的。 2、从我的资产中将FairyGUI导入到当前项目中。 3、我遇到的问题&#xff0c;我的Assets下有两个文件夹分别是Resources和Scenes&#xff0c;导…

滑动登陆注册同页面

这是一个登陆注册在同一个页面滑动选择的页面 技术&#xff1a;html、css、javascript 简单页面实现&#xff08;为了方便&#xff0c;已将代码放在同一文件引用&#xff09;&#xff1a; 1.1、效果图 1.2、完整代码&#xff1a; <!DOCTYPE html> <html lang"…

金融行业有哪些客户管理系统值得推荐?金融CRM系统选型

市场形式波诡云谲&#xff0c;金融行业也面临着资源体系分散、竞争力后继不足、未知风险无法规避等问题。金融企业该如何解决这些问题&#xff0c;或许可以了解一下Zoho CRM管理系统&#xff0c;和其提供的金融行业CRM解决方案。金融CRM系统可以智能化客户筛选、整合各个资源体…

text、icon、progress、rich-text等基础内容小部件(Widget)组件代码明细

属性说明和代码明细如下&#xff1a; text 文本。 属性说明 属性名类型默认值必填说明user-selectbooleanfalse否文本是否可选&#xff0c;该属性会使文本节点显示为 inline-block 示例代码 TYML <view class"text-page"><view class"page-body…

统计学-R语言-2.2

文章目录 前言导入.RData文件方式1方式2方式3 导入程序包方式一方式二 总结 前言 本篇文章是将上篇得软件安装完&#xff0c;对其部分功能进行介绍。 导入.RData文件 在我们日常练习时会有.RData文件导入&#xff0c;并对其进行分析&#xff0c;下面是两种方导入.RData文件。…

通义千问协助分析openHarmony内核编译故障记录

drivers/hdf/khdf/manager/../../../..//framework/utils/src/hdf_sbuf.c:271:6: 错误&#xff1a; ‘-mgeneral-regs-only’ is incompatible with floating-point argument 这个编译错误提示指出&#xff0c;在编译源文件 "hdf_sbuf.c"&#xff08;位于 "driv…

纯html写个个人简历!模版分享啦!!!

用纯html写个个人简历&#xff01;首先得先找个模板&#xff01; 一个优秀模板所应该具有的素质&#xff1f; 简单&#xff1f; 仅仅一个html页面&#xff0c;完全没有乱七八糟&#xff0c;保证学的明明白白。 简单整洁&#xff1f; 该有的内容一个不少&#xff01; 一个完…

快速上手Docker:构建、运行与管理你的容器

快速上手Docker&#xff1a;构建、运行与管理你的容器 引言Docker基础知识1. Docker简介2. 核心概念3. Docker与虚拟机的比较 安装与配置Docker1. 安装Docker2. 配置Docker 构建Docker镜像1. 创建Dockerfile2. 构建镜像3. 验证镜像 运行Docker容器1. 从镜像运行容器2. 查看运行…

Java重写ArrayList方法

前言&#xff1a;ArrayList中有很多方法&#xff0c;我们只有深知这些方法是怎么实现的才能更好的使用&#xff0c;不用死记硬背 我们来一一实现&#xff08;重写&#xff09; 前提准备&#xff1a;我们需要先创建一个类&#xff0c;类中写ArrayList的内部结构组成 public cl…