more fixes
This commit is contained in:
parent
68fb667615
commit
9c7daf8078
3 changed files with 88 additions and 68 deletions
|
@ -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,
|
||||
|
|
|
@ -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({
|
||||
|
|
|
@ -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};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue