Conosco l'uomo della lotta! Ma recentemente ho avuto praticamente a lavorare con Workerman. Se non ti sei imbattuto in questo framework php, allora è meglio dare un'occhiata!
Bene, Workerman è un framework PHP asincrono guidato da eventi per creare facilmente applicazioni di rete veloci e scalabili. (L'ho appena copiato e incollato dal loro sito web hahahah http://www.workerman.net/en/ )
Il modo più semplice per spiegarlo è che quando si tratta di programmare un socket web tutto ciò che devi veramente avere è avere 2 file nel tuo server o server locale (ovunque tu stia lavorando).
server.php (codice sorgente che risponderà a tutte le richieste del cliente)
client.php / client.html (codice sorgente che farà le cose richieste)
Quindi, fondamentalmente, devi prima correggere il codice su server.php e avviare il server. Normalmente, come sto usando Windows che aggiunge più della lotta, corro il server attraverso questo comando -> php server.php start
Bene se stai usando xampp. Ecco un modo per farlo. Vai dove vuoi mettere i tuoi file. Nel nostro caso, inseriremo i file
C: /xampp/htdocs/websocket/server.php
C: /xampp/htdocs/websocket/client.php o client.html
Supponendo che tu abbia già quei file nel tuo server locale. Apri Git Bash o Command Line o Terminal o quello che stai usando e scarica qui le librerie php.
https://github.com/walkor/Workerman
https://github.com/walkor/phpsocket.io
Di solito lo scarico tramite il compositore e carico automaticamente quei file nei miei script php.
E controlla anche questo. Questo è davvero importante ! È necessario questo libary javascript affinché client.php o client.html comunichino con server.php quando lo si esegue.
https://github.com/walkor/phpsocket.io/tree/master/examples/chat/public/socket.io-client
Ho appena copiato e incollato quella cartella socket.io-client allo stesso livello del mio server.php e del mio client.php
Ecco il codice sorgente 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();
Ed ecco il codice sorgente client.php o client.html
<!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>
Ancora una volta, apri la riga di comando o git bash o il terminale in cui inserisci il tuo file server.php. Quindi nel nostro caso, questo è C: / xampp / htdocs / websocket / e digitato php server.php start e premere invio .
Quindi vai al tuo browser e digita http: //localhost/websocket/client.php per visitare il tuo sito. Quindi digita qualsiasi cosa in quella casella di testo e vedrai un websocket di base php in movimento!
Devi solo ricordare. Nella programmazione di socket Web, ha solo bisogno di un server e un client. Eseguire prima il codice del server e aprire il codice del client. E il gioco è fatto! Spero che questo ti aiuti!