serverMessages.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import type { ServerMessageType } from "./enums";
  2. import { ConnectionType } from "./enums";
  3. export type OutgoingServerMessage = (
  4. | OfferMessage
  5. | AnswerMessage
  6. | CandidateMessage
  7. | HeartbeatMessage
  8. ) & { dst: string };
  9. export type IncomingServerMessage =
  10. | OpenMessage
  11. | ErrorMessage
  12. | IdTakenMessage
  13. | InvalidKeyMessage
  14. | ((
  15. | AnswerMessage
  16. | OfferMessage
  17. | CandidateMessage
  18. | LeaveMessage
  19. | ExpireMessage
  20. ) & { src: string });
  21. interface ServerMessage<
  22. Type extends ServerMessageType,
  23. Payload extends object = never,
  24. > {
  25. type: Type;
  26. payload: Payload;
  27. }
  28. interface Offer {
  29. sdp: RTCSessionDescriptionInit;
  30. type: ConnectionType;
  31. connectionId: string;
  32. metadata: unknown;
  33. }
  34. interface MediaConnectionOffer extends Offer {
  35. type: ConnectionType.Media;
  36. }
  37. interface DataConnectionOffer extends Offer {
  38. type: ConnectionType.Data;
  39. label: string;
  40. serialization: string;
  41. reliable: boolean;
  42. }
  43. interface OfferMessage
  44. extends ServerMessage<
  45. ServerMessageType.Offer,
  46. DataConnectionOffer | MediaConnectionOffer
  47. > {}
  48. interface AnswerMessage
  49. extends ServerMessage<ServerMessageType.Answer, Omit<Offer, "metadata">> {}
  50. export interface OpenMessage {
  51. type: ServerMessageType.Open;
  52. dst: string;
  53. }
  54. interface CandidateMessage
  55. extends ServerMessage<
  56. ServerMessageType.Candidate,
  57. {
  58. candidate: RTCIceCandidate;
  59. type: ConnectionType;
  60. connectionId: string;
  61. }
  62. > {}
  63. interface LeaveMessage extends ServerMessage<ServerMessageType.Leave> {}
  64. interface ExpireMessage extends ServerMessage<ServerMessageType.Expire> {}
  65. interface ErrorMessage
  66. extends ServerMessage<
  67. ServerMessageType.Error,
  68. {
  69. msg: string;
  70. }
  71. > {}
  72. interface HeartbeatMessage extends ServerMessage<ServerMessageType.Heartbeat> {}
  73. interface IdTakenMessage extends ServerMessage<ServerMessageType.IdTaken> {}
  74. interface InvalidKeyMessage
  75. extends ServerMessage<ServerMessageType.InvalidKey> {}