50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import Packet from "../packet";
|
||
import Stream from "../stream";
|
||
|
||
export class PacketIceServers extends Packet {
|
||
private iceServers: RTCIceServer[] = [];
|
||
|
||
public getPacketId(): number {
|
||
return 28;
|
||
}
|
||
|
||
public _receive(stream: Stream): void {
|
||
const serversCount = stream.readInt16();
|
||
this.iceServers = [];
|
||
for(let i = 0; i < serversCount; i++){
|
||
const urls = stream.readString();
|
||
const username = stream.readString();
|
||
const credential = stream.readString();
|
||
this.iceServers.push({
|
||
urls,
|
||
username,
|
||
credential
|
||
});
|
||
}
|
||
}
|
||
|
||
public _send(): Promise<Stream> | Stream {
|
||
const stream = new Stream();
|
||
stream.writeInt16(this.getPacketId());
|
||
stream.writeInt16(this.iceServers.length);
|
||
for(let i = 0; i < this.iceServers.length; i++){
|
||
const server = this.iceServers[i];
|
||
/**
|
||
* Не поддерживает массив urls!!!
|
||
*/
|
||
stream.writeString((server.urls as string));
|
||
stream.writeString(server.username || "");
|
||
stream.writeString(server.credential || "");
|
||
}
|
||
return stream;
|
||
}
|
||
|
||
public getIceServers(): RTCIceServer[] {
|
||
return this.iceServers;
|
||
}
|
||
|
||
public setIceServers(servers: RTCIceServer[]) {
|
||
this.iceServers = servers;
|
||
}
|
||
|
||
} |