npm.io
0.5.3 • Published 2 months ago

extra-native-websocket

Licence
MIT
Version
0.5.3
Deps
8
Size
34 kB
Vulns
0
Weekly
0

extra-native-websocket

Install

npm install --save extra-native-websocket
# or
yarn add extra-native-websocket

API

WebSocketError
class WebSocketError extends CustomError {
  readonly code: number
  readonly reason: string
}
ExtraNativeWebSocket
import { Emitter } from '@blackglory/structures'

enum BinaryType {
  Blob
, ArrayBuffer
}

enum State {
  Closed
, Connecting
, Connected
, Closing
}

class ExtraNativeWebSocket extends Emitter<{
  open: [event: Event]
  message: [event: MessageEvent]
  error: [event: Event]
  close: [event: CloseEvent]
}> {
  constructor(createWebSocket: () => WebSocket)

  getState(): State
  getBinaryType(): BinaryType
  setBinaryType(val: BinaryType): void

  /**
   * @throws {WebSocketError}
   */
  connect(signal?: AbortSignal): Promise<void>
  close(code?: number, reason?: string): Promise<void>
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
}
autoReconnect
function autoReconnect(
  ws: ExtraNativeWebSocket
, reconnectInterval?: number = 0
, connectTimeout?: number
): () => void
autoReconnectWithExponentialBackOff
function autoReonnectWithExponentialBackOff(
  ws: ExtraWebSocket
, reconnectInterval: {
    baseInterval: number
    maxInterval?: number = Infinity
    factor?: number = 2
    jitter?: boolean = true
  }
, connectTimeout?: number
): () => void