Eu conheço o homem da luta! Mas recentemente trabalhei com o Workerman. Se você ainda não encontrou este framework php, é melhor verificar isso!
Bem, Workerman é uma estrutura PHP assíncrona orientada a eventos para criar facilmente aplicativos de rede escaláveis e rápidos. (Apenas copiei e colei isso no site hahahah http://www.workerman.net/en/ )
A maneira mais fácil de explicar isso é que, quando se trata de programação de soquetes da Web, tudo o que você realmente precisa é ter 2 arquivos em seu servidor ou servidor local (onde quer que esteja trabalhando).
server.php (código fonte que responderá a todas as solicitações do cliente)
client.php / client.html (código fonte que fará os itens solicitados)
Então, basicamente, você primeiro corrige o código em seu server.php e inicia o servidor. Normalmente, como eu estou usando o Windows que adiciona mais dificuldades, eu executo o servidor através deste comando -> php server.php start
Bem, se você estiver usando o xampp. Aqui está uma maneira de fazer isso. Vá para onde você deseja colocar seus arquivos. No nosso caso, vamos colocar os arquivos em
C: /xampp/htdocs/websocket/server.php
C: /xampp/htdocs/websocket/client.php ou client.html
Supondo que você já tenha esses arquivos no servidor local. Abra seu Git Bash ou Linha de Comando ou Terminal ou o que você estiver usando e faça o download das bibliotecas php aqui.
https://github.com/walkor/Workerman
https://github.com/walkor/phpsocket.io
Normalmente, eu baixa-o via compositor e apenas carrego esses arquivos automaticamente nos meus scripts php.
E verifique também este. Isso é realmente importante ! Você precisa dessa biblioteca javascript para que o client.php ou o client.html se comunique com o server.php ao executá-lo.
https://github.com/walkor/phpsocket.io/tree/master/examples/chat/public/socket.io-client
Acabei de copiar e colar a pasta socket.io-client no mesmo nível que meu server.php e client.php
Aqui está o código do servidor server.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use PHPSocketIO\SocketIO;
// listen port 2021 for socket.io client
$io = new SocketIO(2021);
$io->on('connection', function($socket)use($io){
$socket->on('send message', function($msg)use($io){
$io->emit('new message', $msg);
});
});
Worker::runAll();
E aqui está o client.php ou client.html sourcecode
<!DOCTYPE html>
<html>
<head>
<title>Chat</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="chat-messages" style="overflow-y: scroll; height: 100px; "></div>
<input type="text" class="message">
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="socket.io-client/socket.io.js"></script>
<script>
var socket = io.connect("ws://127.0.0.1:2021");
$('.message').on('change', function(){
socket.emit('send message', $(this).val());
$(this).val('');
});
socket.on('new message', function(data){
$('#chat-messages').append('<p>' + data +'</p>');
});
</script>
</html>
Mais uma vez, abra sua linha de comando ou git bash ou terminal onde você coloca o arquivo server.php. Portanto, no nosso caso, é C: / xampp / htdocs / websocket / e digitado em php server.php start e pressione enter.
Em seguida, vá ao seu navegador e digite http: //localhost/websocket/client.php para visitar seu site. Em seguida, basta digitar qualquer coisa nessa caixa de texto e você verá um php websocket básico em movimento!
Você só precisa se lembrar. Na programação de soquetes da web, ele só precisa de um servidor e um cliente. Execute o código do servidor primeiro e abra o código do cliente. E aí está! Espero que isto ajude!