more fixes

This commit is contained in:
MathMan05 2024-10-09 19:32:38 -05:00
parent 68fb667615
commit 9c7daf8078
3 changed files with 88 additions and 68 deletions

View file

@ -483,33 +483,33 @@ type memberChunk = {
not_found: string[];
};
type voiceupdate={
op: 0,
t: "VOICE_STATE_UPDATE",
d: {
guild_id: string,
channel_id: string,
user_id: string,
member: memberjson,
session_id: string,
token: string,
deaf: boolean,
mute: boolean,
self_deaf: boolean,
self_mute: boolean,
self_video: boolean,
suppress: boolean
},
s: number
op: 0,
t: "VOICE_STATE_UPDATE",
d: {
guild_id: string,
channel_id: string,
user_id: string,
member: memberjson,
session_id: string,
token: string,
deaf: boolean,
mute: boolean,
self_deaf: boolean,
self_mute: boolean,
self_video: boolean,
suppress: boolean
},
s: number
};
type voiceserverupdate={
op: 0,
t: "VOICE_SERVER_UPDATE",
d: {
token: string,
guild_id: string,
endpoint: string
},
s: 6
op: 0,
t: "VOICE_SERVER_UPDATE",
d: {
token: string,
guild_id: string,
endpoint: string
},
s: 6
};
type memberlistupdatejson={
op: 0,
@ -541,7 +541,7 @@ type memberlistupdatejson={
count: number,
id: string
}[]
}
}
}
type webRTCSocket= {
op: 8,
@ -552,21 +552,21 @@ type webRTCSocket= {
op:6,
d:{t: number}
}|{
op: 2,
d: {
ssrc: number,
"streams": {
type: "video",//probally more options, but idk
rid: string,
quality: number,
ssrc: number,
rtx_ssrc:number
}[],
ip: number,
port: number,
"modes": [],//no clue
"experiments": []//no clue
}
op: 2,
d: {
ssrc: number,
"streams": {
type: "video",//probally more options, but idk
rid: string,
quality: number,
ssrc: number,
rtx_ssrc:number
}[],
ip: number,
port: number,
"modes": [],//no clue
"experiments": []//no clue
}
}|sdpback|opRTC12;
type sdpback={
op: 4,
@ -578,29 +578,29 @@ type sdpback={
}
};
type opRTC12={
op: 12,
d: {
user_id: string,
audio_ssrc: number,
video_ssrc: number,
streams: [
{
type: "video",
rid: "100",
ssrc: number,
active: boolean,
quality: 100,
rtx_ssrc: number,
max_bitrate: 2500000,
max_framerate: number,
max_resolution: {
type: "fixed",
width: number,
height: number
}
}
]
}
op: 12,
d: {
user_id: string,
audio_ssrc: number,
video_ssrc: number,
streams: [
{
type: "video",
rid: "100",
ssrc: number,
active: boolean,
quality: 100,
rtx_ssrc: number,
max_bitrate: 2500000,
max_framerate: number,
max_resolution: {
type: "fixed",
width: number,
height: number
}
}
]
}
}
export{
readyjson,

View file

@ -507,6 +507,9 @@ class Localuser{
waitingForVoice?:((arg:voiceupdate|undefined)=>void);
currentVoice?:Voice;
async joinVoice(voice:Voice){
if(this.currentVoice){
this.currentVoice.leave();
}
this.currentVoice=voice;
if(this.ws){
this.ws.send(JSON.stringify({

View file

@ -62,6 +62,10 @@ class Voice{
setTimeout(this.sendAlive.bind(this), 1000);
break;
case 12:
if(!this.users.has(json.d.audio_ssrc)){
console.log("redo 12!");
this.makeOp12();
}
this.users.set(json.d.audio_ssrc,json.d.user_id);
break
@ -176,8 +180,6 @@ a=rtcp-mux\r`;
})).sdp;
await pc.setLocalDescription({sdp:this.offer});
if(!this.counter) throw new Error("counter isn't defined");
const counter=this.counter;
const remote:{sdp:string,type:RTCSdpType}={sdp:this.cleanServerSDP(counter),type:"answer"};
@ -188,7 +190,7 @@ a=rtcp-mux\r`;
for(const thing of (await sender.getStats())){
if(thing[1].ssrc){
this.ssrcMap.set(sender,thing[1].ssrc);
this.makeOp12(sender)
this.makeOp12(sender);
}
}
}
@ -196,7 +198,11 @@ a=rtcp-mux\r`;
});
}
}
async makeOp12(sender:RTCRtpSender){
async makeOp12(sender:RTCRtpSender|undefined|[RTCRtpSender,string]=(this.ssrcMap.entries().next().value)){
if(!sender) throw new Error("sender doesn't exist");
if(sender instanceof Array){
sender=sender[0];
}
if(this.ws){
this.ws.send(JSON.stringify({
op: 12,
@ -480,5 +486,16 @@ a=rtcp-mux\r`;
//pc.setRemoteDescription({sdp:json.d.token,type:""})
*/
}
async leave(){
this.status="Left voice chat";
if(this.ws){
this.ws.close();
this.ws=undefined;
}
if(this.pc){
this.pc.close();
this.pc=undefined;
}
}
}
export {Voice};