Znam walczącego człowieka! Ale ostatnio prawie pracowałem z Workermanem. Jeśli nie natknąłeś się na ten framework php, lepiej to sprawdź!
Cóż, Workerman jest asynchronicznym, sterowanym zdarzeniami frameworkiem PHP do łatwego tworzenia szybkich, skalowalnych aplikacji sieciowych. (Właśnie skopiowałem i wkleiłem to z ich strony internetowej hahahah http://www.workerman.net/en/ )
Prostym sposobem na wyjaśnienie tego jest to, że jeśli chodzi o programowanie za pomocą gniazda sieciowego, wszystko, czego naprawdę potrzebujesz, to mieć 2 pliki na serwerze lub serwerze lokalnym (gdziekolwiek pracujesz).
server.php (kod źródłowy, który odpowie na wszystkie żądania klienta)
client.php / client.html (kod źródłowy, który wykona żądane rzeczy)
Więc w zasadzie najpierw poprawiasz kod na swoim server.php i uruchamiasz serwer. Zwykle, ponieważ używam systemu Windows, który dodaje więcej trudności, uruchamiam serwer za pomocą tego polecenia -> php server.php start
Cóż, jeśli używasz Xampp. Oto jeden sposób, aby to zrobić. Idź tam, gdzie chcesz umieścić swoje pliki. W naszym przypadku zamierzamy umieścić pliki
C: /xampp/htdocs/websocket/server.php
C: /xampp/htdocs/websocket/client.php lub client.html
Zakładając, że masz już te pliki na swoim lokalnym serwerze. Otwórz swój Git Bash, wiersz poleceń lub terminal lub cokolwiek, z którego korzystasz i pobierz biblioteki php tutaj.
https://github.com/walkor/Workerman
https://github.com/walkor/phpsocket.io
Zwykle pobieram go przez kompozytora i po prostu automatycznie ładuję te pliki w moich skryptach php.
A także sprawdź ten. To jest naprawdę ważne ! Potrzebujesz tej biblioteki javascript, aby twój client.php lub client.html komunikował się z server.php po uruchomieniu.
https://github.com/walkor/phpsocket.io/tree/master/examples/chat/public/socket.io-client
Po prostu skopiowałem i wkleiłem ten folder socket.io-client na tym samym poziomie co mój server.php i mój client.php
Tutaj jest kod źródłowy 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();
A oto kod źródłowy client.php lub 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>
Jeszcze raz otwórz wiersz poleceń, git bash lub terminal, w którym umieściłeś plik server.php. Więc w naszym przypadku jest to C: / xampp / htdocs / websocket / i wpisaliśmy php server.php start i naciśnij enter.
Następnie przejdź do przeglądarki i wpisz http: //localhost/websocket/client.php, aby odwiedzić swoją witrynę. Następnie po prostu wpisz cokolwiek do tego pola tekstowego, a zobaczysz podstawowe gniazdo php w podróży!
Musisz tylko pamiętać. W programowaniu gniazd sieciowych wystarczy serwer i klient. Najpierw uruchom kod serwera, a następnie otwórz kod klienta. I masz to! Mam nadzieję że to pomoże!