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

Method onWebSocket

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

* Called upon a ws.io connection. * @param req * @param socket * @param websocket * @private

(
    req: EngineRequest,
    socket: Duplex,
    websocket: WsWebSocket,
  )

Source from the content-addressed store, hash-verified

884 * @private
885 */
886 private onWebSocket(
887 req: EngineRequest,
888 socket: Duplex,
889 websocket: WsWebSocket,
890 ) {
891 websocket.on("error", onUpgradeError);
892
893 if (
894 transports[req._query.transport] !== undefined &&
895 !transports[req._query.transport].prototype.handlesUpgrades
896 ) {
897 debug("transport doesnt handle upgraded requests");
898 websocket.close();
899 return;
900 }
901
902 // get client id
903 const id = req._query.sid;
904
905 // keep a reference to the ws.Socket
906 req.websocket = websocket;
907
908 if (id) {
909 const client = this.clients[id];
910 if (!client) {
911 debug("upgrade attempt for closed client");
912 websocket.close();
913 } else if (client.upgrading) {
914 debug("transport has already been trying to upgrade");
915 websocket.close();
916 } else if (client.upgraded) {
917 debug("transport had already been upgraded");
918 websocket.close();
919 } else {
920 debug("upgrading existing transport");
921
922 // transport error handling takes over
923 websocket.removeListener("error", onUpgradeError);
924
925 const transport = this.createTransport(
926 req._query.transport as TransportName,
927 req,
928 );
929 // @ts-expect-error this option is only for WebSocket impl
930 transport.perMessageDeflate = this.opts.perMessageDeflate;
931 client._maybeUpgrade(transport);
932 }
933 } else {
934 const closeConnection = (errorCode, errorContext) =>
935 abortUpgrade(socket, errorCode, errorContext);
936 this.handshake(
937 req._query.transport as TransportName,
938 req,
939 closeConnection,
940 );
941 }
942
943 function onUpgradeError() {

Callers 3

callbackMethod · 0.95
onWebSocketFunction · 0.80
openFunction · 0.80

Calls 5

createTransportMethod · 0.95
debugFunction · 0.85
_maybeUpgradeMethod · 0.80
onMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected