MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / Server

Class Server

modules/network/http/http.js:467–513  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

465*/
466
467export class Server {
468 #listener;
469 connections = [];
470
471 constructor(dictionary = {}) {
472 this.#listener = new Listener({port: 80, ...dictionary});
473 this.#listener.callback = listener => {
474 const socket = new Socket({listener: this.#listener, noDelay: true});
475 const request = new Request({socket}); // request class will work to receive request body
476 socket.callback = server.bind(request);
477 request.server = this; // associate server with request
478 request.state = 1; // already connected socket
479 request.callback = this.callback; // transfer server.callback to request.callback
480 this.connections.push(request);
481 request.callback(Server.connection); // tell app we have a new connection
482 };
483 }
484
485 close(connections = true) {
486 if (connections) {
487 this.connections.forEach(request => {
488 try {
489 request.close();
490 }
491 catch {
492 }
493 });
494 delete this.connections;
495 }
496 this.#listener.close();
497 this.#listener = undefined;
498 }
499 detach(connection) {
500 const i = this.connections.indexOf(connection);
501 if (i < 0) throw new Error;
502
503 this.connections.splice(i, 1);
504
505 const socket = connection.socket;
506 delete socket.callback;
507 connection.state = 10;
508 delete connection.socket;
509 connection.close();
510
511 return socket;
512 }
513}
514Server.connection = 1;
515Server.status = 2;
516Server.header = 3;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected