Criar e executar um projeto Workerman
O que é Workerman?
Workerman é uma biblioteca de comunicação de rede assíncrona de alta performance para PHP, projetada para desenvolver aplicações de rede com alta simultaneidade e alta performance. Pode ser usada para construir servidores Web, servidores WebSocket, servidores TCP/UDP, entre outros, sendo aplicável em cenários como chat em tempo real, servidores de jogos, Internet das Coisas, etc. Workerman possui características de leveza, facilidade de uso e eficiência, permitindo aos desenvolvedores implementar facilmente aplicações de rede complexas.
Principais características e vantagens do Workerman
- Alta performance: Baseado em eventos e I/O não bloqueante assíncrono, capaz de lidar com um grande número de conexões simultâneas.
- Suporte a múltiplos protocolos: Suporta diversos protocolos de rede, como HTTP, WebSocket, TCP, UDP, etc.
- Fácil de usar: Oferece uma API simples e fácil de usar, permitindo que desenvolvedores comecem rapidamente.
- Extensão flexível: Funcionalidades adicionais podem ser implementadas através de plugins e extensões.
- Forte apoio comunitário: Conta com uma comunidade de desenvolvedores ativa e uma rica documentação.
Workerman pode ajudar os desenvolvedores a construir rapidamente aplicações de rede de alta performance, adequado para vários cenários que precisam de processamento de alta simultaneidade.
Criar e executar um servidor Web simples usando Workerman
Neste artigo, vamos mostrar como criar e executar um servidor Web simples usando Workerman no ambiente ServBay. Vamos demonstrar como instalar o Workerman, escrever o código básico do servidor e executar o servidor.
::: dica O ServBay recomenda que os desenvolvedores coloquem seus sites no diretório /Applications/ServBay/www
para facilitar a gestão. :::
Instalar o Workerman
Instalar o Composer
O ServBay já vem com o Composer instalado de fábrica, não sendo necessária uma instalação separada.
Criar o diretório do projeto
Crie um novo diretório de projeto e navegue até ele:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3Instalar o Workerman
Use o Composer para instalar o Workerman:
bashcomposer require workerman/workerman
1
Escrever o código do servidor Web
Crie um arquivo server.php
no diretório do projeto e adicione o seguinte código:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Cria uma instância de servidor Web, escutando na porta 8080
$webServer = new Worker('http://0.0.0.0:8080');
// Inicia 4 processos para lidar com as requisições
$webServer->count = 4;
// Define a lógica de processamento das requisições
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// Executa todas as instâncias do Worker
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Executar o servidor Web
No diretório do projeto, execute o seguinte comando para iniciar o servidor Web:
php server.php start
Depois de iniciar, você pode acessar http://localhost:8080
no navegador, onde verá a mensagem Hello ServBay!
.
Criar um servidor WebSocket usando Workerman
Além de servidor Web, Workerman também pode ser usado para criar servidores WebSocket. A seguir está um exemplo de um servidor WebSocket simples.
Criar o código do servidor WebSocket
Crie um arquivo
websocket_server.php
no diretório do projeto e adicione o seguinte código:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Cria uma instância de servidor WebSocket, escutando na porta 8081 $wsServer = new Worker('websocket://0.0.0.0:8081'); // Inicia 4 processos para lidar com as requisições $wsServer->count = 4; // Define a lógica de processamento ao estabelecer conexão $wsServer->onConnect = function($connection) { echo "Nova conexão\n"; }; // Define a lógica de processamento ao receber mensagens $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Define a lógica de processamento ao fechar conexão $wsServer->onClose = function($connection) { echo "Conexão encerrada\n"; }; // Executa todas as instâncias do 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
28Executar o servidor WebSocket
No diretório do projeto, execute o seguinte comando para iniciar o servidor WebSocket:
bashphp websocket_server.php start
1Depois de iniciar, você pode usar um cliente WebSocket (como uma ferramenta de depuração WebSocket no navegador) para se conectar a
ws://localhost:8081
e enviar mensagens, o servidor irá ecoar a mensagem recebida.
Criar um servidor TCP usando Workerman
Workerman também pode ser usado para criar servidores TCP. A seguir está um exemplo de um servidor TCP simples.
Criar o código do servidor TCP
Crie um arquivo
tcp_server.php
no diretório do projeto e adicione o seguinte código:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Cria uma instância de servidor TCP, escutando na porta 8082 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // Inicia 4 processos para lidar com as requisições $tcpServer->count = 4; // Define a lógica de processamento ao estabelecer conexão $tcpServer->onConnect = function($connection) { echo "Nova conexão\n"; }; // Define a lógica de processamento ao receber mensagens $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Define a lógica de processamento ao fechar conexão $tcpServer->onClose = function($connection) { echo "Conexão encerrada\n"; }; // Executa todas as instâncias do 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
28Executar o servidor TCP
No diretório do projeto, execute o seguinte comando para iniciar o servidor TCP:
bashphp tcp_server.php start
1Depois de iniciar, você pode usar um cliente TCP (como o comando
telnet
ounc
) para se conectar alocalhost:8082
e enviar mensagens; o servidor irá ecoar a mensagem recebida.
Resumo
Com os passos descritos acima, você conseguiu usar o ServBay para criar e executar um projeto Workerman, utilizando as funcionalidades do Workerman para criar servidores Web, WebSocket e TCP. A alta performance e facilidade de uso do Workerman o tornam uma excelente opção para construir aplicações de rede com alta simultaneidade e alta performance. Esperamos que este artigo ajude você a começar rapidamente com o Workerman e a aplicá-lo em seus projetos.