Динамический запрос ICE серверов
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,6 +27,7 @@ import { PacketDeviceResolve } from "./packets/packet.device.resolve";
|
||||
import { PacketSync } from "./packets/packet.sync";
|
||||
import { PacketSignalPeer } from "./packets/packet.signal.peer";
|
||||
import { PacketWebRTC } from "./packets/packet.webrtc";
|
||||
import { PacketIceServers } from "./packets/packet.ice.servers";
|
||||
|
||||
export default class Protocol extends EventEmitter {
|
||||
private serverAddress: string;
|
||||
@@ -129,6 +130,7 @@ export default class Protocol extends EventEmitter {
|
||||
this._supportedPackets.set(25, new PacketSync());
|
||||
this._supportedPackets.set(26, new PacketSignalPeer());
|
||||
this._supportedPackets.set(27, new PacketWebRTC());
|
||||
this._supportedPackets.set(28, new PacketIceServers());
|
||||
}
|
||||
|
||||
private _findWaiters(packetId: number): ((packet: Packet) => void)[] {
|
||||
|
||||
Reference in New Issue
Block a user