Crear y ejecutar un proyecto de Workerman
¿Qué es Workerman?
Workerman es una librería de comunicación de red asíncrona de alto rendimiento para PHP, diseñada para desarrollar aplicaciones de red de alta concurrencia y alto rendimiento. Se puede usar para construir servidores web, servidores WebSocket, servidores TCP/UDP, etc., adecuado para chats en tiempo real, servidores de juegos, IoT y otros escenarios. Workerman es ligero, fácil de usar y eficiente, permitiendo a los desarrolladores implementar aplicaciones de red complejas sin dificultad.
Características y ventajas principales de Workerman
- Alto rendimiento: Basado en eventos y E/S no bloqueante asíncrona, capaz de manejar un gran número de conexiones concurrentes.
- Soporte de múltiples protocolos: Compatible con protocolos HTTP, WebSocket, TCP, UDP, entre otros.
- Fácil de usar: Proporciona una API simple y fácil de usar, permitiendo a los desarrolladores empezar rápidamente.
- Extensible: Se pueden agregar más funcionalidades a través de plugins y extensiones.
- Fuerte soporte comunitario: Cuenta con una comunidad de desarrolladores activa y abundantes recursos de documentación.
Workerman puede ayudar a los desarrolladores a construir rápidamente aplicaciones de red de alto rendimiento, adecuado para escenarios que requieren manejo de alta concurrencia.
Crear y ejecutar un servidor web simple con Workerman
En este artículo, presentaremos cómo crear y ejecutar un servidor web simple usando Workerman en el entorno de ServBay. Mostraremos cómo instalar Workerman, escribir el código básico del servidor y ejecutar el servidor.
TIP
ServBay recomienda a los desarrolladores colocar sus sitios web en el directorio /Applications/ServBay/www
para facilitar la gestión.
Instalar Workerman
Instalar Composer
ServBay ya viene con Composer preinstalado, por lo que no es necesario instalarlo separado.
Crear el directorio del proyecto
Cree un nuevo directorio de proyecto y acceda a él:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3Instalar Workerman
Use Composer para instalar Workerman:
bashcomposer require workerman/workerman
1
Escribir el código del servidor web
Cree un archivo server.php
en el directorio del proyecto y añada el siguiente código:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Crear una instancia de servidor web que escuche en el puerto 8080
$webServer = new Worker('http://0.0.0.0:8080');
// Iniciar 4 procesos para manejar las solicitudes
$webServer->count = 4;
// Definir la lógica de procesamiento de solicitudes
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// Ejecutar todas las instancias de Worker
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Ejecutar el servidor web
Ejecute el siguiente comando en el directorio del proyecto para iniciar el servidor web:
php server.php start
Después de iniciar, puede acceder a http://localhost:8080
en su navegador, y verá la salida Hello ServBay!
.
Crear un servidor WebSocket con Workerman
Además del servidor web, Workerman también se puede usar para crear servidores WebSocket. A continuación, se muestra un ejemplo sencillo de un servidor WebSocket.
Escribir el código del servidor WebSocket
Cree un archivo
websocket_server.php
en el directorio del proyecto y añada el siguiente código:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Crear una instancia de servidor WebSocket que escuche en el puerto 8081 $wsServer = new Worker('websocket://0.0.0.0:8081'); // Iniciar 4 procesos para manejar las solicitudes $wsServer->count = 4; // Definir la lógica de manejo cuando se establece una conexión $wsServer->onConnect = function($connection) { echo "New connection\n"; }; // Definir la lógica de procesamiento de mensajes recibidos $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Definir la lógica de manejo cuando se cierra una conexión $wsServer->onClose = function($connection) { echo "Connection closed\n"; }; // Ejecutar todas las instancias de Worker Worker::runAll();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Ejecutar el servidor WebSocket
Ejecute el siguiente comando en el directorio del proyecto para iniciar el servidor WebSocket:
bashphp websocket_server.php start
1Después de iniciar, puede usar un cliente WebSocket (como una herramienta de depuración de WebSocket en el navegador) para conectarse a
ws://localhost:8081
, y enviar mensajes, el servidor reflejará los mensajes recibidos.
Crear un servidor TCP con Workerman
Workerman también se puede usar para crear servidores TCP. A continuación se muestra un ejemplo sencillo de un servidor TCP.
Escribir el código del servidor TCP
Cree un archivo
tcp_server.php
en el directorio del proyecto y añada el siguiente código:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Crear una instancia de servidor TCP que escuche en el puerto 8082 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // Iniciar 4 procesos para manejar las solicitudes $tcpServer->count = 4; // Definir la lógica de manejo cuando se establece una conexión $tcpServer->onConnect = function($connection) { echo "New connection\n"; }; // Definir la lógica de procesamiento de mensajes recibidos $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Definir la lógica de manejo cuando se cierra una conexión $tcpServer->onClose = function($connection) { echo "Connection closed\n"; }; // Ejecutar todas las instancias de Worker Worker::runAll();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Ejecutar el servidor TCP
Ejecute el siguiente comando en el directorio del proyecto para iniciar el servidor TCP:
bashphp tcp_server.php start
1Después de iniciar, puede usar un cliente TCP (como el comando
telnet
onc
) para conectarse alocalhost:8082
, y enviar mensajes, el servidor reflejará los mensajes recibidos.
Resumen
Siguiendo estos pasos, ha creado y ejecutado con éxito un proyecto de Workerman usando ServBay, y ha utilizado las funcionalidades de Workerman para crear un servidor web, un servidor WebSocket y un servidor TCP. El alto rendimiento y la facilidad de uso de Workerman lo hacen muy adecuado para la construcción de aplicaciones de red de alta concurrencia y alto rendimiento. Espero que este artículo le ayude a empezar rápidamente con Workerman y lo aplique en sus proyectos.