websocket.d.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /// <reference types="node" />
  2. import type { Blob } from 'buffer'
  3. import type { MessagePort } from 'worker_threads'
  4. import {
  5. EventInit,
  6. EventListenerOptions,
  7. AddEventListenerOptions,
  8. EventListenerOrEventListenerObject
  9. } from './patch'
  10. import Dispatcher from './dispatcher'
  11. import { HeadersInit } from './fetch'
  12. export type BinaryType = 'blob' | 'arraybuffer'
  13. interface WebSocketEventMap {
  14. close: CloseEvent
  15. error: ErrorEvent
  16. message: MessageEvent
  17. open: Event
  18. }
  19. interface WebSocket extends EventTarget {
  20. binaryType: BinaryType
  21. readonly bufferedAmount: number
  22. readonly extensions: string
  23. onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
  24. onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
  25. onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
  26. onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
  27. readonly protocol: string
  28. readonly readyState: number
  29. readonly url: string
  30. close(code?: number, reason?: string): void
  31. send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
  32. readonly CLOSED: number
  33. readonly CLOSING: number
  34. readonly CONNECTING: number
  35. readonly OPEN: number
  36. addEventListener<K extends keyof WebSocketEventMap>(
  37. type: K,
  38. listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
  39. options?: boolean | AddEventListenerOptions
  40. ): void
  41. addEventListener(
  42. type: string,
  43. listener: EventListenerOrEventListenerObject,
  44. options?: boolean | AddEventListenerOptions
  45. ): void
  46. removeEventListener<K extends keyof WebSocketEventMap>(
  47. type: K,
  48. listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
  49. options?: boolean | EventListenerOptions
  50. ): void
  51. removeEventListener(
  52. type: string,
  53. listener: EventListenerOrEventListenerObject,
  54. options?: boolean | EventListenerOptions
  55. ): void
  56. }
  57. export declare const WebSocket: {
  58. prototype: WebSocket
  59. new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
  60. readonly CLOSED: number
  61. readonly CLOSING: number
  62. readonly CONNECTING: number
  63. readonly OPEN: number
  64. }
  65. interface CloseEventInit extends EventInit {
  66. code?: number
  67. reason?: string
  68. wasClean?: boolean
  69. }
  70. interface CloseEvent extends Event {
  71. readonly code: number
  72. readonly reason: string
  73. readonly wasClean: boolean
  74. }
  75. export declare const CloseEvent: {
  76. prototype: CloseEvent
  77. new (type: string, eventInitDict?: CloseEventInit): CloseEvent
  78. }
  79. interface MessageEventInit<T = any> extends EventInit {
  80. data?: T
  81. lastEventId?: string
  82. origin?: string
  83. ports?: (typeof MessagePort)[]
  84. source?: typeof MessagePort | null
  85. }
  86. interface MessageEvent<T = any> extends Event {
  87. readonly data: T
  88. readonly lastEventId: string
  89. readonly origin: string
  90. readonly ports: ReadonlyArray<typeof MessagePort>
  91. readonly source: typeof MessagePort | null
  92. initMessageEvent(
  93. type: string,
  94. bubbles?: boolean,
  95. cancelable?: boolean,
  96. data?: any,
  97. origin?: string,
  98. lastEventId?: string,
  99. source?: typeof MessagePort | null,
  100. ports?: (typeof MessagePort)[]
  101. ): void;
  102. }
  103. export declare const MessageEvent: {
  104. prototype: MessageEvent
  105. new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
  106. }
  107. interface ErrorEventInit extends EventInit {
  108. message?: string
  109. filename?: string
  110. lineno?: number
  111. colno?: number
  112. error?: any
  113. }
  114. interface ErrorEvent extends Event {
  115. readonly message: string
  116. readonly filename: string
  117. readonly lineno: number
  118. readonly colno: number
  119. readonly error: any
  120. }
  121. export declare const ErrorEvent: {
  122. prototype: ErrorEvent
  123. new (type: string, eventInitDict?: ErrorEventInit): ErrorEvent
  124. }
  125. interface WebSocketInit {
  126. protocols?: string | string[],
  127. dispatcher?: Dispatcher,
  128. headers?: HeadersInit
  129. }