| 
					
				 | 
			
			
				@@ -0,0 +1,47 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Subject } from 'rxjs'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import * as WebSocket from 'ws'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { DataPrepService } from '../services/dataprep.service'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { StorageLocation } from '../types/interface'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let msgData = new DataPrepService() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* ---------------------- COMPLEX OPERATION ------------------------------ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const msgPayload: Subject<any> = new Subject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let mongoStorage: StorageLocation = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    type: `MongoDB`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    url: `mongodb://192.168.100.59:27017/default` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+msgData.loadObsData(mongoStorage, msgPayload) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Create a WebSocket server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const wss = new WebSocket.Server({ port: 8080 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Listen for connections to the WebSocket server 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+wss.on('connection', (ws: WebSocket) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('Client connected'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Subscribe to the subject when a client connects 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const subscription = msgPayload.subscribe((element) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const used = process.memoryUsage().heapUsed / 1024 / 1024; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const total = process.memoryUsage().heapTotal / 1024 / 1024; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(`Heap memory usage: ${used.toFixed(2)} MB`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(`Total heap size: ${total.toFixed(2)} MB`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(`Emitting value ${element.appData.msgId} to client`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const messageString = JSON.stringify(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ws.send(messageString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Listen for messages from the client 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ws.on('message', (message: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(`Received message from client: ${message}`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Unsubscribe from the subject when the client disconnects 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ws.on('close', () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('Client disconnected'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        subscription.unsubscribe(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |