MaterialXWeb 0.0.2
Utilities for using MaterialX Packages with Web clients
Loading...
Searching...
No Matches
converters/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 //console.log('io:', io)
19
20 // Initialize the socket connection
21 if (server && server.len > 0)
22 {
23 this.socket = io(server);
24 console.log('Initialized socket.io', this.socket)
25 this.setupEventHandlers();
26 }
27 else
28 {
29 this.socket = io();
30 console.log('Initialized socket.io', this.socket)
31 this.setupEventHandlers();
32 }
33
34 } catch (error) {
35 console.error('Failed to load socket.io:', error);
36 }
37 }
38
39 setupEventHandlers() {
40 // Empty. Derived classes can override this
41 }
42
43 emit(message, data) {
44 this.socket.emit(message, data);
45 }
46}
47
49 constructor(socket, eventHandlers) {
50 console.log('Create event handlers:', eventHandlers)
51 this.socket = socket;
52 this.eventHandlers = eventHandlers;
53 this.setupEventListeners();
54 }
55
56 setupEventListeners() {
57 // Iterate over the event handlers and bind them to the socket
58 for (const [eventName, handler] of Object.entries(this.eventHandlers)) {
59 this.socket.on(eventName, handler);
60 }
61 }
62}