Instalación del cliente
La última versión actual es 4.8.1, lanzada en octubre de 2024.
Puedes encontrar las notas de la versión aquí.
Compatibilidad de versiones
Aquí está la tabla de compatibilidad entre el servidor y el cliente JS:
| Versión del cliente JS | Versión del servidor Socket.IO | |||
|---|---|---|---|---|
| 1.x | 2.x | 3.x | 4.x | |
| 1.x | SÍ | NO | NO | NO |
| 2.x | NO | SÍ | SÍ1 | SÍ1 |
| 3.x | NO | NO | SÍ | SÍ |
| 4.x | NO | NO | SÍ | SÍ |
[1] Sí, con allowEIO3: true
Por favor revisa las guías de migración asociadas:
Soporte de navegadores
Socket.IO soporta IE9 y superiores. IE 6/7/8 ya no son soportados.
La compatibilidad de navegadores se prueba gracias a la increíble plataforma Sauce Labs:
Instalación
Build independiente
Por defecto, el servidor Socket.IO expone un bundle del cliente en /socket.io/socket.io.js.
io se registrará como una variable global:
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
</script>
Si no necesitas esto (ver otras opciones abajo), puedes deshabilitar la funcionalidad en el lado del servidor:
const { Server } = require("socket.io");
const io = new Server({
serveClient: false
});
Desde un CDN
También puedes incluir el bundle del cliente desde un CDN:
<script src="https://cdn.socket.io/4.8.1/socket.io.min.js" integrity="sha384-mkQ3/7FUtcGyoppY6bz/PORYoGqOl7/aSUMn2ymDOJcapfS6PHqxhRTMh1RR0Q6+" crossorigin="anonymous"></script>
Socket.IO también está disponible desde otros CDN:
- cdnjs: https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.8.1/socket.io.min.js
- jsDelivr: https://cdn.jsdelivr.net/npm/socket.io-client@4.8.1/dist/socket.io.min.js
- unpkg: https://unpkg.com/socket.io-client@4.8.1/dist/socket.io.min.js
Hay varios bundles disponibles:
| Nombre | Tamaño | Descripción |
|---|---|---|
| socket.io.js | 34.7 kB gzip | Versión sin minificar, con debug |
| socket.io.min.js | 14.7 kB min+gzip | Versión de producción, sin debug |
| socket.io.msgpack.min.js | 15.3 kB min+gzip | Versión de producción, sin debug y con el parser msgpack |
El paquete debug permite imprimir información de depuración en la consola. Puedes encontrar más información aquí.
Durante el desarrollo, recomendamos usar el bundle socket.io.js. Configurando localStorage.debug = 'socket.io-client:socket', cualquier evento recibido por el cliente se imprimirá en la consola.
Para producción, por favor usa el bundle socket.io.min.js, que es un build optimizado que excluye el paquete debug.
Desde NPM
El cliente Socket.IO es compatible con bundlers como webpack o browserify.
- NPM
- Yarn
- pnpm
- Bun
npm install socket.io-client
yarn add socket.io-client
pnpm add socket.io-client
bun add socket.io-client
El cliente también puede ejecutarse desde Node.js.
Nota: por las razones citadas arriba, podrías querer excluir debug de tu bundle del navegador. Con webpack, puedes usar webpack-remove-debug.
Nota para usuarios de TypeScript: los tipos ahora están incluidos en el paquete socket.io-client y por lo tanto los tipos de @types/socket.io-client ya no son necesarios y de hecho podrían causar errores:
Object literal may only specify known properties, and 'extraHeaders' does not exist in type 'ConnectOpts'
Miscelánea
Árbol de dependencias
Una instalación básica del cliente incluye 9 paquetes, de los cuales 5 son mantenidos por nuestro equipo:
└─┬ socket.io-client@4.8.1
├── @socket.io/component-emitter@3.1.2
├─┬ debug@4.3.7
│ └── ms@2.1.3
├─┬ engine.io-client@6.6.3
│ ├── @socket.io/component-emitter@3.1.2 deduped
│ ├── debug@4.3.7 deduped
│ ├── engine.io-parser@5.2.3
│ ├─┬ ws@8.17.1
│ │ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│ │ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@>=5.0.2
│ └── xmlhttprequest-ssl@2.1.2
└─┬ socket.io-parser@4.2.4
├── @socket.io/component-emitter@3.1.2 deduped
└── debug@4.3.7 deduped
Versiones transitivas
El paquete engine.io-client trae el motor que es responsable de manejar las conexiones de bajo nivel (HTTP long-polling o WebSocket). Ver también: Cómo funciona
Versión de socket.io-client | Versión de engine.io-client | Versión de ws1 |
|---|---|---|
4.8.x | 6.6.x | 8.17.x |
4.7.x | 6.5.x | 8.17.x |
4.6.x | 6.4.x | 8.11.x |
4.5.x | 6.2.x | 8.2.x |
4.4.x | 6.1.x | 8.2.x |
4.3.x | 6.0.x | 8.2.x |
4.2.x | 5.2.x | 7.4.x |
4.1.x | 5.1.x | 7.4.x |
4.0.x | 5.0.x | 7.4.x |
3.1.x | 4.1.x | 7.4.x |
3.0.x | 4.0.x | 7.4.x |
2.5.x | 3.5.x | 7.5.x |
2.4.x | 3.5.x | 7.5.x |
[1] solo para usuarios de Node.js. En el navegador, se usa la API nativa de WebSocket.