baseconnection.ts 954 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { EventEmitter, ValidEventTypes } from "eventemitter3";
  2. import { Peer } from "./peer";
  3. import { ServerMessage } from "./servermessage";
  4. import { ConnectionType } from "./enums";
  5. export type BaseConnectionEvents = {
  6. /**
  7. * Emitted when either you or the remote peer closes the connection.
  8. */
  9. close: () => void;
  10. error: (error: Error) => void;
  11. iceStateChanged: (state: RTCIceConnectionState) => void;
  12. };
  13. export abstract class BaseConnection<
  14. T extends ValidEventTypes,
  15. > extends EventEmitter<T & BaseConnectionEvents> {
  16. protected _open = false;
  17. readonly metadata: any;
  18. connectionId: string;
  19. peerConnection: RTCPeerConnection;
  20. abstract get type(): ConnectionType;
  21. get open() {
  22. return this._open;
  23. }
  24. constructor(
  25. readonly peer: string,
  26. public provider: Peer,
  27. readonly options: any,
  28. ) {
  29. super();
  30. this.metadata = options.metadata;
  31. }
  32. abstract close(): void;
  33. abstract handleMessage(message: ServerMessage): void;
  34. }