MCPcopy Create free account
hub / github.com/FlashpointProject/launcher / onMessage

Method onMessage

src/back/SocketServer.ts:288–325  ·  view source on GitHub ↗
(event: ws.MessageEvent)

Source from the content-addressed store, hash-verified

286 }
287
288 protected async onMessage(event: ws.MessageEvent): Promise<void> {
289 const [parsed_data, parse_error] = parse_message_data(event.data);
290
291 if (parse_error) {
292 console.error('Failed to parse message data.', parse_error || '');
293 return;
294 }
295
296 const [msg, msg_error] = validate_socket_message<any>(parsed_data);
297
298 if (!msg || msg_error) {
299 console.error('Failed to validate message data.', msg_error || '');
300 return;
301 }
302
303 if ('type' in msg) { // Request
304 const queue = this.queues.find(q => q.types.indexOf(msg.type) >= 0);
305
306 if (queue) {
307 queue.items.push({ event: event, req: msg });
308
309 if (!queue.isExecuting) {
310 queue.isExecuting = true;
311 while (queue.items.length > 0) {
312 const item = queue.items.shift();
313 if (item) {
314 await this.handleMessage(item.event, item.req);
315 }
316 }
317 queue.isExecuting = false;
318 }
319 } else {
320 this.handleMessage(event, msg);
321 }
322 } else { // Response
323 this.handleMessage(event, msg);
324 }
325 }
326
327 protected async handleMessage(event: ws.MessageEvent, data: SocketRequestData | SocketResponseData<any>): Promise<void> {
328 // Prepare event

Callers

nothing calls this directly

Calls 4

handleMessageMethod · 0.95
parse_message_dataFunction · 0.90
validate_socket_messageFunction · 0.90
pushMethod · 0.65

Tested by

no test coverage detected