@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
1 lines • 7.44 kB
Source Map (JSON)
{"version":3,"file":"web-socket-connector.mjs","sources":["../../../src/pullClient/web-socket-connector.ts"],"sourcesContent":["import type { ConnectorConfig } from '../types/pull'\nimport { Text } from '../tools/text'\nimport { AbstractConnector } from './abstract-connector'\nimport { ConnectionType } from '../types/pull'\n\nexport class WebSocketConnector extends AbstractConnector {\n private _socket: null | WebSocket\n\n private readonly _onSocketOpenHandler: () => void\n private readonly _onSocketCloseHandler: (event: CloseEvent) => void\n private readonly _onSocketErrorHandler: (event: Event) => void\n private readonly _onSocketMessageHandler: (event: MessageEvent) => void\n\n constructor(config: ConnectorConfig) {\n super(config)\n\n this._connectionType = ConnectionType.WebSocket\n this._socket = null\n\n this._onSocketOpenHandler = this._onSocketOpen.bind(this)\n this._onSocketCloseHandler = this._onSocketClose.bind(this)\n this._onSocketErrorHandler = this._onSocketError.bind(this)\n this._onSocketMessageHandler = this._onSocketMessage.bind(this)\n }\n\n override destroy() {\n super.destroy()\n\n if (this._socket) {\n this._socket.close()\n this._socket = null\n }\n }\n\n /**\n * @inheritDoc\n */\n override connect(): void {\n if (this._socket) {\n if (this._socket.readyState === 1) {\n /**\n * @memo already connected\n */\n return\n } else {\n this.clearEventListener()\n\n this._socket.close()\n this._socket = null\n }\n }\n\n this._createSocket()\n }\n\n get socket(): null | WebSocket {\n return this._socket\n }\n\n /**\n * @inheritDoc\n * @param code\n * @param reason\n */\n override disconnect(code: number, reason: string): void {\n if (this._socket !== null) {\n this.clearEventListener()\n\n this._socket.close(code, reason)\n }\n this._socket = null\n this._disconnectCode = code\n this._disconnectReason = reason\n this.connected = false\n }\n\n /**\n * Via websocket connection\n * @inheritDoc\n */\n override send(buffer: ArrayBuffer | string): boolean {\n if (!this._socket || this._socket.readyState !== 1) {\n this.getLogger().error(`${Text.getDateForLog()}: Pull: WebSocket is not connected`)\n\n return false\n }\n\n this._socket.send(buffer)\n return true\n }\n\n // region Event Handlers ////\n private _onSocketOpen(): void {\n this.connected = true\n }\n\n private _onSocketClose(event: CloseEvent) {\n this._socket = null\n this._disconnectCode = Number(event.code)\n this._disconnectReason = event.reason\n this.connected = false\n }\n\n private _onSocketError(event: Event): void {\n this._callbacks.onError(new Error(`Socket error: ${event}`))\n }\n\n private _onSocketMessage(event: MessageEvent): void {\n this._callbacks.onMessage(event.data)\n }\n // endregion ////\n\n // region Tools ////\n private clearEventListener(): void {\n if (this._socket) {\n this._socket.removeEventListener('open', this._onSocketOpenHandler)\n\n this._socket.removeEventListener('close', this._onSocketCloseHandler)\n\n this._socket.removeEventListener('error', this._onSocketErrorHandler)\n\n this._socket.removeEventListener('message', this._onSocketMessageHandler)\n }\n }\n\n private _createSocket(): void {\n if (this._socket) {\n throw new Error('Socket already exists')\n }\n\n if (!this.connectionPath) {\n throw new Error('Websocket connection path is not defined')\n }\n\n this._socket = new WebSocket(this.connectionPath)\n this._socket.binaryType = 'arraybuffer'\n\n this._socket.addEventListener('open', this._onSocketOpenHandler)\n\n this._socket.addEventListener('close', this._onSocketCloseHandler)\n\n this._socket.addEventListener('error', this._onSocketErrorHandler)\n\n this._socket.addEventListener('message', this._onSocketMessageHandler)\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}