【m】聊天消息接入

This commit is contained in:
zhangzheng
2026-03-12 12:10:40 +08:00
parent b4c41e42c9
commit e9f7b3ad5c
7 changed files with 425 additions and 359 deletions

View File

@@ -18,17 +18,17 @@ export class Signaling extends EventTarget {
}
}
url(method, parameter='') {
url(method, parameter = '') {
let ret = location.origin + '/signaling';
if(method)
if (method)
ret += '/' + method;
if(parameter)
if (parameter)
ret += '?' + parameter;
return ret;
}
async start() {
if(this.running) {
if (this.running) {
return;
}
@@ -55,7 +55,7 @@ export class Signaling extends EventTarget {
const messages = data.messages;
for(const msg of messages) {
for (const msg of messages) {
switch (msg.type) {
case "connect":
break;
@@ -63,14 +63,17 @@ export class Signaling extends EventTarget {
this.dispatchEvent(new CustomEvent('disconnect', { detail: msg }));
break;
case "offer":
this.dispatchEvent(new CustomEvent('offer', { detail: msg } ));
this.dispatchEvent(new CustomEvent('offer', { detail: msg }));
break;
case "answer":
this.dispatchEvent(new CustomEvent('answer', { detail: msg } ));
this.dispatchEvent(new CustomEvent('answer', { detail: msg }));
break;
case "candidate":
this.dispatchEvent(new CustomEvent('candidate', { detail: msg }));
break;
case "on-message":
this.dispatchEvent(new CustomEvent('on-message', { detail: msg.data }));
break;
default:
break;
}
@@ -125,7 +128,14 @@ export class Signaling extends EventTarget {
Logger.log('sendCandidate:' + data);
await fetch(this.url('candidate'), { method: 'POST', headers: this.headers(), body: JSON.stringify(data) });
}
// 在 Signaling 类中添加
async sendMessage(connectionId, message) {
const data = {
'message': message,
'connectionId': connectionId
};
await fetch(this.url('on-message'), { method: 'POST', headers: this.headers(), body: JSON.stringify(data) });
}
async getAll(fromTime = 0) {
return await fetch(this.url(``, `fromtime=${fromTime}`), { method: 'GET', headers: this.headers() });
}
@@ -180,6 +190,8 @@ export class WebSocketSignaling extends EventTarget {
case "candidate":
this.dispatchEvent(new CustomEvent('candidate', { detail: { connectionId: msg.from, candidate: msg.data.candidate, sdpMLineIndex: msg.data.sdpMLineIndex, sdpMid: msg.data.sdpMid } }));
break;
case "on-message":
this.dispatchEvent(new CustomEvent('on-message', { detail: msg.data }));
default:
break;
}
@@ -236,4 +248,15 @@ export class WebSocketSignaling extends EventTarget {
Logger.log(sendJson);
this.websocket.send(sendJson);
}
// 在 WebSocketSignaling 类中添加
sendMessage(connectionId, message) {
const data = {
'message': message,
'senderId': message.senderId,
'connectionId': connectionId
};
const sendJson = JSON.stringify({ type: "on-message", data: data });
Logger.log(sendJson);
this.websocket.send(sendJson);
}
}