1 |
|
2 |
|
3 |
|
4 |
|
5 | import { createWebSocketConnection } from './socket/connection.js';
|
6 | import { ConsoleLogger } from './logger.js';
|
7 | export function listen(options) {
|
8 | const { webSocket, onConnection } = options;
|
9 | const logger = options.logger || new ConsoleLogger();
|
10 | webSocket.onopen = () => {
|
11 | const socket = toSocket(webSocket);
|
12 | const connection = createWebSocketConnection(socket, logger);
|
13 | onConnection(connection);
|
14 | };
|
15 | }
|
16 | export function toSocket(webSocket) {
|
17 | return {
|
18 | send: content => webSocket.send(content),
|
19 | onMessage: cb => {
|
20 | webSocket.onmessage = event => cb(event.data);
|
21 | },
|
22 | onError: cb => {
|
23 | webSocket.onerror = event => {
|
24 | if ('message' in event) {
|
25 | cb(event.message);
|
26 | }
|
27 | };
|
28 | },
|
29 | onClose: cb => {
|
30 | webSocket.onclose = event => cb(event.code, event.reason);
|
31 | },
|
32 | dispose: () => webSocket.close()
|
33 | };
|
34 | }
|
35 |
|
\ | No newline at end of file |