MaterialXWeb 0.0.2
Utilities for using MaterialX Packages with Web clients
Loading...
Searching...
No Matches
ocio/static/js/WebSocketClient.js
1export class WebSocketClient
2{
3 constructor(socketLibrary, server) {
4 this.socket = null;
5 this.initialize(socketLibrary, server);
6 }
7
8 async initialize(socketLibrary, server) {
9 try {
10 if (!socketLibrary || socketLibrary.len == 0)
11 {
12 socketLibrary = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.4/socket.io.esm.min.js";
13 }
14 console.log(socketLibrary)
15 // Dynamically load socket.io from CDN
16 const { io } = await import(socketLibrary);
17
18 // Initialize the socket connection
19 if (server && server.len > 0)
20 {
21 this.socket = io(server);
22 }
23 else
24 {
25 this.socket = io();
26 }
27 console.log('Initialized socket.io')
28
29 this.setupEventHandlers();
30
31 } catch (error) {
32 console.error('Failed to load socket.io:', error);
33 }
34 }
35
36 setupEventHandlers() {
37 // Empty. Derived classes can override this
38 }
39
40 emit(message, data) {
41 this.socket.emit(message, data);
42 }
43}
44
45export class WebSocketEventHandlers {
46 constructor(socket, eventHandlers) {
47 console.log('Create event handlers:', eventHandlers)
48 this.socket = socket;
49 this.eventHandlers = eventHandlers;
50 this.setupEventListeners();
51 }
52
53 setupEventListeners() {
54 // Iterate over the event handlers and bind them to the socket
55 for (const [eventName, handler] of Object.entries(this.eventHandlers)) {
56 this.socket.on(eventName, handler);
57 }
58 }
59}