MCPcopy
hub / github.com/socketio/socket.io / handleUpgrade

Method handleUpgrade

packages/engine.io/lib/server.ts:831–877  ·  view source on GitHub ↗

* Handles an Engine.IO HTTP Upgrade.

(
    req: IncomingMessage,
    socket: Duplex,
    upgradeHead: Buffer,
  )

Source from the content-addressed store, hash-verified

829 * Handles an Engine.IO HTTP Upgrade.
830 */
831 public handleUpgrade(
832 req: IncomingMessage,
833 socket: Duplex,
834 upgradeHead: Buffer,
835 ) {
836 const engineRequest = req as EngineRequest;
837
838 this.prepare(engineRequest);
839
840 const res = new WebSocketResponse(engineRequest, socket);
841 const callback: ErrorCallback = (errorCode, errorContext) => {
842 if (errorCode !== undefined) {
843 this.emit("connection_error", {
844 req: engineRequest,
845 code: errorCode,
846 message: Server.errorMessages[errorCode],
847 context: errorContext,
848 });
849 abortUpgrade(socket, errorCode, errorContext);
850 return;
851 }
852
853 const head = Buffer.from(upgradeHead);
854 upgradeHead = null;
855
856 // some middlewares (like express-session) wait for the writeHead() call to flush their headers
857 // see https://github.com/expressjs/session/blob/1010fadc2f071ddf2add94235d72224cf65159c6/index.js#L220-L244
858 res.writeHead();
859
860 // delegate to ws
861 this.ws.handleUpgrade(engineRequest, socket, head, (websocket) => {
862 this.onWebSocket(engineRequest, socket, websocket);
863 });
864 };
865
866 this._applyMiddlewares(
867 engineRequest,
868 res as unknown as ServerResponse,
869 (err) => {
870 if (err) {
871 callback(Server.errors.BAD_REQUEST, { name: "MIDDLEWARE_FAILURE" });
872 } else {
873 this.verify(engineRequest, true, callback);
874 }
875 },
876 );
877 }
878
879 /**
880 * Called upon a ws.io connection.

Callers 2

attachMethod · 0.95
callbackMethod · 0.45

Calls 3

prepareMethod · 0.95
_applyMiddlewaresMethod · 0.80
callbackFunction · 0.50

Tested by

no test coverage detected