Peer structure & WebRTC structure
This commit is contained in:
parent
7dd4797f00
commit
bbd2ff8057
|
@ -7,6 +7,12 @@ interface IPeerOptions{
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum IMessageSymbase
|
||||||
|
{
|
||||||
|
PayloadMessagePack = -12873.54,
|
||||||
|
PayloadRTCBasePack = -12884.54
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default class Peer extends EventTarget
|
export default class Peer extends EventTarget
|
||||||
{
|
{
|
||||||
|
@ -23,10 +29,30 @@ export default class Peer extends EventTarget
|
||||||
super();
|
super();
|
||||||
this.mwse = wsts;
|
this.mwse = wsts;
|
||||||
this.info = new PeerInfo(this);
|
this.info = new PeerInfo(this);
|
||||||
|
|
||||||
|
this.on('pack',(data:{type?:string,action?:IMessageSymbase,payload?:any}) => {
|
||||||
|
if(data.type == 'rtc')
|
||||||
|
{
|
||||||
|
if(data.action == IMessageSymbase.PayloadRTCBasePack)
|
||||||
|
{
|
||||||
|
if(this.rtc)
|
||||||
|
{
|
||||||
|
return this.rtc.emit("input", data.payload)
|
||||||
|
}
|
||||||
|
console.warn("Not active rtc but recaived rtc packs")
|
||||||
|
};
|
||||||
|
if(data.action == IMessageSymbase.PayloadMessagePack)
|
||||||
|
{
|
||||||
|
return this.emit("message", data.payload)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.emit("message", data);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
public createRTC() : WebRTC
|
public createRTC() : WebRTC
|
||||||
{
|
{
|
||||||
this.rtc = new WebRTC();
|
this.rtc = new WebRTC();
|
||||||
|
this.rtc.peer = this;
|
||||||
this.rtc.on("connected", () => {
|
this.rtc.on("connected", () => {
|
||||||
this.peerConnection = true;
|
this.peerConnection = true;
|
||||||
});
|
});
|
||||||
|
@ -35,22 +61,11 @@ export default class Peer extends EventTarget
|
||||||
})
|
})
|
||||||
this.rtc.on("output",(payload:object) => {
|
this.rtc.on("output",(payload:object) => {
|
||||||
this.send({
|
this.send({
|
||||||
type: 'rtc:session',
|
type: 'rtc',
|
||||||
|
action: IMessageSymbase.PayloadRTCBasePack,
|
||||||
payload: payload
|
payload: payload
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
this.on('message',(data:{type?:string,payload?:any}) => {
|
|
||||||
if(data.type == 'rtc:session')
|
|
||||||
{
|
|
||||||
if(this.rtc)
|
|
||||||
{
|
|
||||||
this.rtc.emit("input", data.payload)
|
|
||||||
}
|
|
||||||
}else if(data.type == 'rtc:message')
|
|
||||||
{
|
|
||||||
this.emit("message", data.payload)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return this.rtc;
|
return this.rtc;
|
||||||
}
|
}
|
||||||
public setPeerOptions(options: string | IPeerOptions){
|
public setPeerOptions(options: string | IPeerOptions){
|
||||||
|
@ -137,7 +152,8 @@ export default class Peer extends EventTarget
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
this.rtc?.send({
|
this.rtc?.send({
|
||||||
type: 'rtc:message',
|
type: 'rtc',
|
||||||
|
action: IMessageSymbase.PayloadMessagePack,
|
||||||
payload: pack
|
payload: pack
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import Peer from "./Peer";
|
||||||
|
|
||||||
interface TransferStreamInfo
|
interface TransferStreamInfo
|
||||||
{
|
{
|
||||||
senders : RTCRtpSender[];
|
senders : RTCRtpSender[];
|
||||||
|
@ -22,6 +24,8 @@ export default class WebRTC
|
||||||
public events : { [eventname:string]: Function[] } = {};
|
public events : { [eventname:string]: Function[] } = {};
|
||||||
public channel : RTCDataChannel | undefined;
|
public channel : RTCDataChannel | undefined;
|
||||||
|
|
||||||
|
public peer? : Peer;
|
||||||
|
|
||||||
public WebRTC()
|
public WebRTC()
|
||||||
{
|
{
|
||||||
this.rtc = new RTCPeerConnection({
|
this.rtc = new RTCPeerConnection({
|
||||||
|
@ -337,7 +341,7 @@ export default class WebRTC
|
||||||
if(this.connectionStatus != 'connected'){
|
if(this.connectionStatus != 'connected'){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (const [id, {stream}] of this.sendingStream) {
|
for (const [, {stream}] of this.sendingStream) {
|
||||||
if(stream == undefined)
|
if(stream == undefined)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue