Este proyecto tiene como objetivo la implementación de un sistema de comunicación bidireccional en tiempo real entre un servidor y un cliente utilizando WebSockets. El servidor está desarrollado en Node.js utilizando la librería ws
, y el cliente está desarrollado en Dart utilizando el paquete web_socket_channel
.
Recientemente se han agregado nuevas características tanto al servidor como al cliente. El servidor ahora soporta el manejo de varios tipos de mensajes (chat, alertas, unirse) y el cliente permite enviar y recibir mensajes con diferentes tipos, como mensajes de chat y alertas.
- Comprender cómo funcionan las conexiones WebSocket con Dart para luego implementarlo en Flutter.
- Implementar un servidor WebSocket en Node.js.
- Crear un cliente WebSocket en Dart.
- Practicar la comunicación en tiempo real entre servidor y cliente.
- Mejorar la estructura del cliente para manejar tipos de mensajes más diversos.
- Servidor WebSocket en Node.js: Usando la librería
ws
para manejar las conexiones. - Cliente WebSocket en Dart: Usando el paquete
web_socket_channel
para la comunicación. - Mensajes bidireccionales: Envío y recepción de mensajes entre cliente y servidor.
- Conexiones simultáneas: El servidor puede manejar múltiples conexiones al mismo tiempo.
- Manejo de múltiples tipos de mensajes: El cliente y servidor ahora manejan mensajes de tipo chat, alert y join.
- Cliente robusto: El cliente puede enviar y recibir diferentes tipos de mensajes, como chats y alertas.
bin/
├── client.dart # Código raíz del cliente Dart
├── websocket_client.dart # Lógica del cliente para conectarse al WebSocket
├── transport/
│ ├── message.dart # Modelo de datos para los mensajes
│ ├── message_handler.dart # Manejador de los mensajes (decodificación y codificación)
│ ├── message_type.dart # Tipos de mensajes (chat, alert, join, tc)
src/
├── transport/
│ ├── message.js # Modelo de datos para los mensajes
│ ├── messageHandler.js # Manejador de los mensajes (decodificación y codificación)
│ ├── messageType.js # Tipos de mensajes (chat, alert, join, tc)
├── handleConnection.js # maneja la conexion y los diferentes eventos (igual que el server pero mas estructurado)
├── handleMessages.js # maneja exactamente el evento de message, el listen (igual que el server pero mas estructurado)
├── server.js # maneja la raiz del server (igual que el server pero mas estructurado)
├── utils.js # maneja metodo utiles del server (igual que el server pero mas estructurado)
server.js # Código raiz del servidor WebSocket, codigo basico
-
Asegúrate de tener Node.js instalado. Si no, sigue las instrucciones en la documentación oficial.
-
Clona este repositorio:
git clone https://github.com/DevmenteSac/dart_websocket
- Navega al directorio del servidor:
cd ws_server_node
- Instala las dependencias:
npm install
- Ejecuta el servidor:
node src/server.js
-
Asegúrate de tener Dart instalado.
-
Navega al directorio del cliente:
cd ws_client_dart
- Instala las dependencias:
dart pub get
- Ejecuta el cliente:
dart run bin/client.dart
- Node.js: Entorno de ejecución JavaScript para el servidor.
- ws: Librería para WebSockets en Node.js.
- Dart: Lenguaje de programación para el cliente.
- web_socket_channel: Paquete de Dart para la comunicación WebSocket.
- VS Code: Entorno de Desarrollo.
- 🌟 Cómo establecer una conexión WebSocket desde un cliente en Dart hacia un servidor en Node.js.
- 🌟 Cómo manejar la recepción y envío de mensajes a través de WebSockets.
- 🌟 Cómo gestionar múltiples conexiones de clientes en el servidor.
- 🌟 Cómo implementar y manejar diferentes tipos de mensajes (chat, alertas, unirse) en WebSockets.
- Mejorar el manejo de errores en el servidor y cliente.
- Implementar reconexiones automáticas en caso de desconexión.
- Implementar pruebas unitarias y de integración.
Este proyecto es principalmente para aprendizaje personal, pero siéntete libre de proponer mejoras o sugerencias.
Bastian Naitsab - devmentesacontacto@gmail.com
GitHub: DevmenteSac