当前位置:   article > 正文

小程序实现chatGpt功能_小程序 chatgpt

小程序 chatgpt

效果如下:
在这里插入图片描述

SSE问题太多,所以还是配合websorket实现

1.连接sorket

const handleConnectWebScoket = (session_id:Number) => {
	uni.showLoading({
		title: '加载中'
	})
	uni.connectSocket({
	  url: '' //后端url
	  , success(data) {
	    console.log("websocket连接成功");
	  },
	})
	uni.onSocketOpen(function (res_open) {
		console.log("websocket - onSocketOpen");
		sendWSMessage(session_id)
		receiveSocketMessage()
	})
	// 监听webSocket错误
	uni.onSocketError(function (res) {
		console.log("websocket监控服务暂时不可用", res);
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.发布sorket的message

const sendWSMessage = (session_id:Number) => {
	let form = { // 后端定义的传参
	  params: {
	  }
	}
	console.log("websocket - sendSocketMessage");
	uni.sendSocketMessage({
	  data: JSON.stringify(form),
	  success: res => {
	  }
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.获取sorket的内容

const receiveSocketMessage = () => {
	console.log("websocket - onSocketMessage");
	uni.onSocketMessage(function(res) {
		uni.hideLoading()
		if (res.data === 'PONG') {
			return
		}
		if (res.data && isJSON(res.data)) {
		  const data = JSON.parse(res.data)
		  if (data.code && data.code === 4002) {
		    if (interval.value){
		      clearInterval(interval.value)
		    }
			closeWS()
		    return
		  }
		  if (data.content) {
		    if (isJSON(data.content)) {
		      const content = JSON.parse(data.content)
		      if (content.choices[0].delta.content) {
		        list.value[index.value] += content.choices[0].delta.content
		        chatScroll()
		      }
		    }
		    if (data.content === '\\n\\n') {
		      list.value[index.value] += data.content
		    }
		  }
		}
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

关闭sorket的方法

const closeWS = () => {
	uni.closeSocket({
		success(close_res) {
			console.log('close_res',close_res);
		},fail(e) {
			console.log('close_fail',e)
		}
	})
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如何使用呢?

const index = ref<number>(0)
const list = ref<Array<string>>([])

页面如何展示
{{ list[index] }}
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/406261
推荐阅读
相关标签
  

闽ICP备14008679号