You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
apply-assistant-v3/uni_modules/gao-ChatSSEClient/readme.md

126 lines
3.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# sse 客户端组件支持v2、v3、安卓、ios、浏览器、微信小程序
## 使用说明
### 导入组件
点击右上角 `下载插件并导入HBuilderX`
uniapp插件地址https://ext.dcloud.net.cn/plugin?id=20971
或者你可以参考我的示例
### 示例代码
```javascript
<template>
<button @click="start">开始</button>
<button @click="stop">停止</button>
<template v-if="loading">
<view>{{ openLoading ? "正在连接sse..." : '连接完成!' }}</view>
<view>{{ loading ? "加载中..." : '' }}</view>
</template>
<view>
{{ responseText }}
</view>
<gao-ChatSSEClient
ref="chatSSEClientRef"
@onOpen="openCore"
@onError="errorCore"
@onMessage="messageCore"
@onFinish="finishCore"
/>
</template>
<script setup>
import { ref } from 'vue'
const chatSSEClientRef = ref(null);
const responseText = ref("");
const loading = ref(false);
const openLoading = ref(false);
const openCore = (response) => {
openLoading.value = false;
console.log("open sse", response);
}
const errorCore = (err) => {
console.log("error sse", err);
}
const messageCore = (msg) => {
console.log("message sse", msg);
responseText.value += `${msg}\n`
}
const finishCore = () => {
console.log("finish sse")
loading.value = false;
}
const start = () => {
if (loading.value) return;
openLoading.value = true;
loading.value = true;
responseText.value = "";
chatSSEClientRef.value.startChat({
/**
* 将它换成你的地址
* 注意:
* 如果使用 sse-server.js 要在手机端使用的话请确保你的手机和电脑处在一个局域网下并且是正常的ip地址
*/
url: import.meta.env.VITE_CHAT_URL || 'http://localhost:3000/sse',
// 请求头
headers: {
Authorization: import.meta.env.VITE_CHAT_AUTHORIZATION,
},
// 默认为 post
method: 'post',
body: {
"stream":true,
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "你是来自艺咖科技的数字员工,你的名字叫小咖。"}]
}
})
}
const stop = () => {
chatSSEClientRef.value.stopChat()
console.log("stop");
}
</script>
```
# 温馨提示
示例项目根目录的`sse-server.js`文件提供了一个简单的sse测试服务使用 `node sse-server.js`运行
**提出问题之前请先确保你的接口没有问题**
---
**请仔细阅读我提供的示例代码。**
**如果你的程序有问题请先下载我提供的示例项目调试!**
---
如果想了解原理请看我掘金的文章: [点击前往](https://juejin.cn/post/7435632766375084082)
本插件依赖于 `fetch-event-source`将编辑后的js集成因为我修改了原来库解析的逻辑使其更适用于中国宝宝体质。
---
**如果这个组件解决了你的问题,麻烦去[github](https://github.com/gaozhenqiang/uniapp-chatSSEClient/) 帮我点个赞,谢谢大家**
有新需求或者bug可以在github上提issues或者加我q `1933669775`
# 常见问题
## ios报错TypeError: Load failed
后端接口处理一下跨域即可解决。