Los ejemplos en línea generalmente incluirán la biblioteca socket.io usando
<script src="/socket.io/socket.io.js"></script> Sin embargo, me preguntaba por qué esto funciona aunque no tengo una carpeta socket.io en mi directorio. ¿La ejecución de node index.js crea automáticamente esta carpeta socket.io?
El servidor socket.io escucha todas las solicitudes entrantes que comienzan con /socket.io y "roba" esas solicitudes para sí mismo, manteniéndolas del servidor http normal que comparte el servidor socket.io.
Cuando el servidor socket.io ve que se trata de una solicitud del archivo socket.io.js , el servidor socket.io accede a su propio node_modules/socket.io/client-dist para obtener el socket.io.js del lado del cliente socket.io.js y lo devuelve al cliente.
Si observa lo que encontrará en node_modules/socket.io/client-dist , verá el archivo socket.io.js allí. Ese es el archivo que el servidor socket.io devuelve al cliente. Este es un código del lado del cliente, solo en el servidor con el fin de enviarlo al cliente cuando lo solicite.
Tenga en cuenta que las respuestas a las rutas entrantes con un servidor http de nodejs no se refieren necesariamente a los directorios de archivos en el servidor. Si algún código conectado al servidor http maneja una solicitud entrante, puede decidir qué quiere enviar como respuesta, desde cualquier parte del servidor (ya sea desde un archivo o no). Solo las herramientas de middleware específicas como express.static() buscan en el disco duro del servidor un directorio que coincida con la solicitud entrante.