【WebSocket】微信小程序原生组件使用SocketTask 调用星火认知大模型

直接上代码

微信开发者工具-调试器-终端-新建终端 进行依赖安装

npm install base-64

npm install crypto-js

然后顶部工具栏依次点击 工具-构建npm

// index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const Base64 = require('base-64');
const CryptoJS = require('crypto-js')
let socket = ""
Page({data: {APPID: "",//从开放平台控制台中获取APIKEY: "",//从开放平台控制台中获取APISecret: "",//从开放平台控制台中获取motto: 'Hello World',historyTextList: [],userInfo: {avatarUrl: defaultAvatarUrl,nickName: '',},hasUserInfo: false,canIUseGetUserProfile: wx.canIUse('getUserProfile'),canIUseNicknameComp: wx.canIUse('input.type.nickname'),TEXT: '你好,我的名字叫大王',sparkResult: '',tempRes: '' // 临时答复保存},bindViewTap() {wx.navigateTo({url: '../logs/logs'})},onLoad() {this.connectWebsocket()},getWebsocketUrl() {var _this2 = this;var url = "wss://spark-api.xf-yun.com/v3.5/chat";var host = "spark-api.xf-yun.com";var apiKeyName = 'api_key';var date = new Date().toGMTString();var algorithm = "hmac-sha256";var headers = "host date request-line";var signatureOrigin = "host: ".concat(host, "\ndate: ").concat(date, "\nGET /v3.5/chat HTTP/1.1");var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, _this2.data.APISecret);var signature = CryptoJS.enc.Base64.stringify(signatureSha);var authorizationOrigin = "".concat(apiKeyName, "=\"").concat(_this2.data.APIKEY, "\",algorithm=\"").concat(algorithm, "\",headers=\"").concat(headers, "\",signature=\"").concat(signature, "\"");var authorization = Base64.encode(authorizationOrigin);url = "".concat(url, "?authorization=").concat(authorization, "&date=").concat(encodeURI(date), "&host=")//进行|不进行URRLENCODE均没报错.concat(host);return url;},connectWebsocket() {var url = this.getWebsocketUrl();socket = wx.connectSocket({url: url,success(res) {console.log('WebSocket 连接成功: ', res)},fail(err) {console.log('WebSocket 连接失败: ', err)}})// onOpensocket.onOpen((res) => {var _this = this;console.log('WebSocket 已连接',res)_this.data.historyTextList.push({"role": "user","content": _this.data.TEXT});var params = {"header": {"app_id": _this.data.APPID,"uid": "123456789"},"parameter": {"chat": {"domain": "generalv3.5","random_threshold": 0,"max_tokens": 1024}},"payload": {"message": {"text": _this.data.historyTextList}}};_this.sparkResult = _this.sparkResult + "\r\n我:" + _this.TEXT + "\r\n";_this.sparkResult = _this.sparkResult + "大模型:";console.log("发送第一帧...", JSON.stringify(params));socket.send({data:JSON.stringify(params),fail(err) {console.log('WebSocket 消息发送失败', err)}})})// onErrorsocket.onError((err) => {console.log('WebSocket 连接失败:', err)})// onClosesocket.onClose((ret) => {console.log('断开 WebSocket 连接', ret)})//监听接收到的消息socket.onMessage((res) => {let msg = res.dataconsole.info("接收到的服务器消息--原始:")console.info(res)if (typeof msg === "string" && msg.startsWith("{")) {msg = JSON.parse(msg)}console.log("接收到的服务器消息", msg)})},
})

控制台输出

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ESP-WROOM-32的双串口通信并显示到OLED显示屏上

目录 开发板引脚图 Arduino环境配置1.ESP32开发版下载2.Arduino开发板选择 -> ESP32 Dev Module3.安装驱动库 接线图Arduino代码现象演示 开发板 ESP-WROOM-32 引脚图 Arduino环境配置 1.ESP32开发版下载 选择 esp32 by Espressif Systems 2.Arduino开发板选择 -> E…

绕过安全狗

本节我们想要绕过的安全狗版本为v4.023957 ,它是网站安全狗的Apache版。 首先搭建环境。渗透环境选用DVWA漏洞集成环境,下载地址 为http://www.dvwa.co.uk/ 。DVWA是一款集成的渗透测试演练环境,当刚刚入门 并且找不到合适的靶机时&#xff…

pwn学习笔记(1)前置基础

pwn学习笔记(1) (1)pwn简介: ​ 以下来自于百度百科:”Pwn”是一个黑客语法的俚语词,是指攻破设备或者系统发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音—…

百面嵌入式专栏(面试题)内存管理相关面试题1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍内存管理相关面试题 。 一、内存管理相关面试题 page数据结构中的_refcount和_mapcount有什么区别?匿名页面和高速缓存页面有什么区别?page数据结构中有一个锁,我们称为页锁,请问trylock_page()和loc…

async/await使用过程中,要注意的问题

问: const getData async () >{ console.log(触发了getData接口) let resultData await getActivityInfo(activityId); console.log(resultData,resultData) let id resultData.id; let shareImg resultData.shareImg let shareSubtitle resultData.shareSubtit…

RabbitMQ-4.MQ的可靠性

MQ的可靠性 4.MQ的可靠性4.1.数据持久化4.1.1.交换机持久化4.1.2.队列持久化4.1.3.消息持久化 4.2.LazyQueue4.2.1.控制台配置Lazy模式4.2.2.代码配置Lazy模式4.2.3.更新已有队列为lazy模式 4.MQ的可靠性 消息到达MQ以后,如果MQ不能及时保存,也会导致消…

C# CAD交互界面-自定义面板集-添加快捷命令(五)

运行环境 vs2022 c# cad2016 调试成功 一、引用 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using System; using System.Drawing; using System.Windows.Forms; 二、代码说明 [CommandMethod("Cre…

恒创科技:香港 BGP 服务器网络连通性如何测试?

随着互联网的快速发展,网络连通性测试变得越来越重要。网络连通性测试的目的是确定网络设备之间的连接是否正常,以及数据包是否能够在网络中顺利传输。本文将介绍一种简单易行的香港 BGP 服务器网络连通性的测试方法,利用tracer测试工具。这里…

vue3项目中使用mapv

vue3项目中使用mapv mapv是百度地图官方提供的地图数据可视化开源项目,提供了很多效果酷炫的绘图api mapv地址在这里,示例图在这里 先解释为什么要用mapv echarts画的地图,都是行政区划,就算是geo地图,也只能在行政…

MPLS——多协议标签交换

目录 1 多协议标签交换 MPLS 1.1 MPLS 的工作原理 1.1.1 MPLS 工作特点 1.1.2 MPLS 协议的基本原理 1.1.3 MPLS 的基本工作过程 1.2 转发等价类 FEC 1.2.1 FEC 用于负载平衡 1.3 MPLS 首部的位置与格式 1.3.1 MPLS 首部的位置 1.3.2 MPLS 首部的格式 1.4 新一代的…

python二维数组初始化的一个极其隐蔽的bug(浅拷贝)

初始化一个三行三列的矩阵 m n 3初始化方式1 a [[0 for i in range(m)] for j in range(n)]初始化方式2 b [] row [0 for i in range(0,m)] for i in range(0,n):b.append(row)分别输出两个初始化的结果 for row in a:print(row) for row in b:print(row)当前的输出为…

20240206三次握手四次挥手

TCP和UDP异同点 相同点:同属于传输层的协议 不同点: TCP ----> 稳定 1> 提供面向连接的,可靠的数据传输服务 2> 传输过程中,数据无误、数据无丢失、数据无失序、数据无重复 1、TCP会给每个数据包编上编号&#xff…