Download the PHP package osumionline/plugin-websocket without Composer
On this page you can find all versions of the php package osumionline/plugin-websocket. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download osumionline/plugin-websocket
More information about osumionline/plugin-websocket
Files in osumionline/plugin-websocket
Package plugin-websocket
Short Description Plugin to add WebSocket server support to Osumi Framework
License MIT
Informations about the package plugin-websocket
osumionline/plugin-websocket
Plugin para añadir soporte de servidor WebSocket a Osumi Framework.
Este plugin permite arrancar un servidor WebSocket independiente desde una tarea CLI de la aplicación, definir acciones personalizadas y asociarlas a componentes del framework.
Características
- Servidor WebSocket integrado mediante Ratchet
- Arranque desde una tarea CLI creada por el usuario
- Asociación de acciones a componentes
- Acciones públicas y protegidas
- Validación de tokens configurable por el usuario
- Gestión de múltiples conexiones por usuario
- Métodos para envío directo y broadcast
- Sistema de depuración del estado interno
Instalación
/src/Config/Config.json json { "plugins": { "websocket": { "host": "localhost", "port": 8080, "path": "/ws" } } } javascript const ws = new WebSocket('ws://localhost:8080/ws');
src/ Task/ StartServerTask.php Websocket/ actions.php Modules/ PingComponent.php LoginComponent.php SendMessageComponent.php
src/Websocket/actions.php json { "action": "ping", "data": {} } json { "action": "send-message", "data": { "message": "Hola" } } json { "action": "send-message", "data": ["Hola"] } json { "status": "ok", "data": { "message": "pong" } } json { "status": "error", "error": "unknown_action" } json { "status": "{{status}}", "data": { "message": "{{data.message}}" } }
## Autenticación
El plugin no impone ninguna acción concreta para autenticar.
Es el usuario quien decide:
- cómo se llama la acción (login, authenticate, etc.)
- cómo obtiene el token
- cómo valida el token
## Validación de tokens
El servidor puede recibir un método validador mediante:
La firma esperada es:
- Si el token no es válido, debe devolver null
- Si es válido, debe devolver un array con al menos:
- id
Ejemplo:
## Gestión de usuario
El plugin mantiene en memoria:
- conexiones abiertas
- usuarios asociados
- conexiones de cada usuario
Un usuario puede tener varias conexiones abiertas al mismo tiempo.
## Asociar usuario a la conexión actual
Ejemplo:
## Obtener datos de usuario
Usuario actual:
Usuario concreto:
## Cerrar sesión o expulsar usuario
Usuario actual:
Usuario concreto:
Esto cerrará todas las conexiones asociadas a ese usuario y borrará sus datos de memoria.
## Envío de mensajes
Enviar a la conexión actual
## Enviar a todas las conexiones de un usuario
## Broadcast global
## Broadcast a usuarios autenticados
## Depuración
El plugin ofrece un método para obtener información interna del estado actual:
Devuelve un JSON con información sobre:
- conexión actual
- conexiones abiertas
- usuarios cargados en memoria
- acciones registradas
Ejemplo de uso desde un componente o acción de administración:
## Errores estándar
Actualmente el plugin puede devolver estos errores:
- invalid_json
- bad_request
- unknown_action
- unauthorized
- invalid_response
- server_error
## Flujo general
1. Se arranca el servidor desde una tarea CLI
2. Se cargan las acciones definidas en `src/Websocket/actions.php`
3. Un cliente abre una conexión WebSocket
4. El cliente envía un mensaje con `action` y `data`
5. El plugin valida el mensaje
6. Busca la acción registrada
7. Si la acción es protegida, valida la autenticación
8. Crea un `ORequest` con los datos recibidos
9. Ejecuta el componente asociado
10. Envía la respuesta JSON al cliente
## Notas
- El plugin no modifica el core de Osumi Framework
- El plugin reutiliza el sistema de componentes existente
- El plugin está pensado para PHP 8.2 o superior
- La validación de autenticación queda totalmente en manos de la aplicación
## Licencia
MIT