update chat demo

This commit is contained in:
tt
2025-09-03 14:10:37 +08:00
parent 885fe71f7b
commit 7e449ba296
10 changed files with 1437 additions and 425 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{d as g,q as m,r as d,b as f,c as b,j as e,t as x,u as I,W as k,w as u,x as _,A as p,H as w,I as y,_ as S}from"./index-6bd21cb0.js";const U="/chatdemo/logo.png",c=a=>(w("data-v-6e16c5bf"),a=a(),y(),a),V={class:"hello"},A=c(()=>e("div",null,[e("a",{href:"https://githubim.com",target:"_blank"},[e("img",{src:U,class:"logo",alt:"Vite logo"})])],-1)),P={class:"form"},D={class:"item"},L=c(()=>e("div",{class:"label"},[e("label",null,"API基地址")],-1)),B={class:"field"},C={class:"item"},K=c(()=>e("div",{class:"label"},[e("label",null,"登录账号")],-1)),R={class:"field"},W={class:"item"},q=c(()=>e("div",{class:"label"},[e("label",null,"登录密码")],-1)),E={class:"field"},M=g({__name:"Login",setup(a){const v=m();var s=(o=>{var t=new RegExp("(^|&)"+o+"=([^&]*)(&|$)"),l=window.location.search.substr(1).match(t);return l!=null?unescape(l[2]):null})("apiurl");!s||(s==null?void 0:s.trim())==""?s="http://127.0.0.1:5001":s&&s.endsWith("/")&&(s=s.substring(0,s.length-1)),console.log("apiurl--->",s),d(0);const r=d(s||""),n=d(""),i=d(""),h=()=>{p.shared.config.apiURL=r.value,p.shared.post("/user/token",{uid:n.value,token:i.value||"default111111",device_flag:1,device_level:0}).then(o=>{console.log(o),v.push({path:"/chat",query:{uid:n.value,token:i.value}})}).catch(o=>{alert(o.msg)})};return(o,t)=>(f(),b("div",V,[A,e("p",null," 悟空IM演示程序当前SDK版本[v"+x(I(k).shared().config.sdkVersion)+"] ",1),e("div",P,[e("div",D,[L,e("div",B,[u(e("input",{type:"text",placeholder:"请输入API基地址","onUpdate:modelValue":t[0]||(t[0]=l=>r.value=l)},null,512),[[_,r.value]])])]),e("div",C,[K,e("div",R,[u(e("input",{type:"text",placeholder:"演示下,随便输,唯一即可","onUpdate:modelValue":t[1]||(t[1]=l=>n.value=l)},null,512),[[_,n.value]])])]),e("div",W,[q,e("div",E,[u(e("input",{type:"text",placeholder:"演示下,随便输","onUpdate:modelValue":t[2]||(t[2]=l=>i.value=l)},null,512),[[_,i.value]])])]),e("button",{class:"submit",onClick:h},"登录")])]))}});const H=S(M,[["__scopeId","data-v-6e16c5bf"]]);export{H as default};
import{d as g,q as m,r as d,b as f,c as b,j as e,t as x,u as I,W as k,w as u,x as _,A as p,H as w,I as y,_ as S}from"./index-5271d4ae.js";const U="/chatdemo/logo.png",c=a=>(w("data-v-6e16c5bf"),a=a(),y(),a),V={class:"hello"},A=c(()=>e("div",null,[e("a",{href:"https://githubim.com",target:"_blank"},[e("img",{src:U,class:"logo",alt:"Vite logo"})])],-1)),P={class:"form"},D={class:"item"},L=c(()=>e("div",{class:"label"},[e("label",null,"API基地址")],-1)),B={class:"field"},C={class:"item"},K=c(()=>e("div",{class:"label"},[e("label",null,"登录账号")],-1)),R={class:"field"},W={class:"item"},q=c(()=>e("div",{class:"label"},[e("label",null,"登录密码")],-1)),E={class:"field"},M=g({__name:"Login",setup(a){const v=m();var s=(o=>{var t=new RegExp("(^|&)"+o+"=([^&]*)(&|$)"),l=window.location.search.substr(1).match(t);return l!=null?unescape(l[2]):null})("apiurl");!s||(s==null?void 0:s.trim())==""?s="http://127.0.0.1:5001":s&&s.endsWith("/")&&(s=s.substring(0,s.length-1)),console.log("apiurl--->",s),d(0);const r=d(s||""),n=d(""),i=d(""),h=()=>{p.shared.config.apiURL=r.value,p.shared.post("/user/token",{uid:n.value,token:i.value||"default111111",device_flag:1,device_level:0}).then(o=>{console.log(o),v.push({path:"/chat",query:{uid:n.value,token:i.value}})}).catch(o=>{alert(o.msg)})};return(o,t)=>(f(),b("div",V,[A,e("p",null," 悟空IM演示程序当前SDK版本[v"+x(I(k).shared().config.sdkVersion)+"] ",1),e("div",P,[e("div",D,[L,e("div",B,[u(e("input",{type:"text",placeholder:"请输入API基地址","onUpdate:modelValue":t[0]||(t[0]=l=>r.value=l)},null,512),[[_,r.value]])])]),e("div",C,[K,e("div",R,[u(e("input",{type:"text",placeholder:"演示下,随便输,唯一即可","onUpdate:modelValue":t[1]||(t[1]=l=>n.value=l)},null,512),[[_,n.value]])])]),e("div",W,[q,e("div",E,[u(e("input",{type:"text",placeholder:"演示下,随便输","onUpdate:modelValue":t[2]||(t[2]=l=>i.value=l)},null,512),[[_,i.value]])])]),e("button",{class:"submit",onClick:h},"登录")])]))}});const H=S(M,[["__scopeId","data-v-6e16c5bf"]]);export{H as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover,shrink-to-fit=no">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css">
<title>悟空IM演示程序</title>
<script type="module" crossorigin src="/chatdemo/assets/index-6bd21cb0.js"></script>
<script type="module" crossorigin src="/chatdemo/assets/index-5271d4ae.js"></script>
<link rel="stylesheet" href="/chatdemo/assets/index-4eaedd69.css">
</head>

View File

@@ -2,10 +2,9 @@
import { nextTick, onMounted, onUnmounted, ref, toRaw, toRefs, unref } from 'vue';
import APIClient from '../services/APIClient'
import { useRouter } from "vue-router";
import { WKSDK, Message, MessageText, Channel, ChannelTypePerson, ChannelTypeGroup, MessageStatus, PullMode, MessageContent, MessageContentType, ConnectionInfo, AgentChangeListener } from "wukongimjssdk";
import { WKSDK, Message, MessageText, Channel, ChannelTypePerson, ChannelTypeGroup, MessageStatus, PullMode, MessageContent, ConnectionInfo, WKEventManager, WKEvent, MessageContentType, WKEventListener } from "wukongimjssdk";
import { ConnectStatus, ConnectStatusListener } from 'wukongimjssdk';
import { SendackPacket, Setting } from 'wukongimjssdk';
import { Buffer } from 'buffer';
import { MessageListener, MessageStatusListener } from 'wukongimjssdk';
import Conversation from '../components/Conversation/index.vue'
import { CustomMessage, orderMessage } from '../customessage';
@@ -13,7 +12,6 @@ import MessageUI from '../messages/Message.vue';
import { Marked } from 'marked';
import { markedHighlight } from "marked-highlight";
import hljs from 'highlight.js';
import { Agent } from 'wukongimjssdk/lib/agent';
const marked = new Marked(markedHighlight({
emptyLangClass: 'hljs',
@@ -61,11 +59,10 @@ title.value = `${uid || ""}(未连接)`
let connectStatusListener!: ConnectStatusListener
let messageListener!: MessageListener
let messageStatusListener!: MessageStatusListener
let agentListener!: AgentChangeListener // 监听
let eventListener!: WKEventListener // 事件监听
onMounted(() => {
console.log("WKSDK.shared().config.apiURL--->", APIClient.shared.config.apiURL)
if (!APIClient.shared.config.apiURL || APIClient.shared.config.apiURL === '') {
WKSDK.shared().connectManager.disconnect()
@@ -129,16 +126,13 @@ const connectIM = (addr: string) => {
WKSDK.shared().chatManager.addMessageListener(messageListener)
// 流监听
agentListener = (agent: Agent) => {
if (agent.channel && !to.value.isEqual(agent.channel)) {
return
}
eventListener = (event: WKEvent) => {
for (const message of messages.value) {
if (message.messageID === agent.messageID) {
if (agent.events && agent.events.length > 0) {
message.content = new MessageText(agent.text)
} else {
message.content = agent.initMessage?.content
if (message.clientMsgNo === event.id) {
if (message.contentType === MessageContentType.text) {
message.streamText = (message.streamText || "") + (event.dataText||"")
const textContent = new MessageText(message.streamText || "")
message.content = textContent
}
break
}
@@ -147,7 +141,7 @@ const connectIM = (addr: string) => {
scrollBottom()
}
}
WKSDK.shared().agentManager.addAgentChangeListener(agentListener)
WKSDK.shared().eventManager.addEventListener(eventListener)
messageStatusListener = (ack: SendackPacket) => {
console.log(ack)
@@ -167,7 +161,7 @@ onUnmounted(() => {
WKSDK.shared().connectManager.removeConnectStatusListener(connectStatusListener)
WKSDK.shared().chatManager.removeMessageListener(messageListener)
WKSDK.shared().chatManager.removeMessageStatusListener(messageStatusListener)
WKSDK.shared().agentManager.removeAgentChangeListener(agentListener)
WKSDK.shared().eventManager.removeEventListener(eventListener)
WKSDK.shared().disconnect()
})

File diff suppressed because it is too large Load Diff

View File

@@ -17,8 +17,8 @@ demo:
on: true
conversation:
on: true
# webhook: # webhook配置 用于接收消息通知事件,详情请查看文档
# httpAddr: "http://127.0.0.1:8080/webhooks/wukongim"
webhook: # webhook配置 用于接收消息通知事件,详情请查看文档
httpAddr: "http://127.0.0.1:8080/webhooks/wukongim"
cluster:
nodeId: 1 # 节点ID
addr: "tcp://127.0.0.1:10001"

View File

@@ -909,6 +909,7 @@ func (m *message) syncMessages(c *wkhttp.Context) {
}
for _, streamV2 := range streamV2s {
if message.MessageId == streamV2.MessageId {
message.End = streamV2.End
message.EndReason = streamV2.EndReason
message.StreamData = streamV2.Payload