WebSocket ialah protokol komunikasi dupleks penuh yang boleh mewujudkan sambungan masa nyata antara pelayan dan pelanggan untuk mencapai komunikasi masa nyata. Dalam pembangunan Web, rangka kerja PHP yang biasa digunakan ialah ThinkPHP Jadi bagaimana untuk menggunakan WebSocket untuk komunikasi masa nyata dalam ThinkPHP6?
Mula-mula anda perlu memasang sambungan swoole pada pelayan Anda boleh menggunakan arahan komposer untuk memasang:
composer require swoole/swoole
Nota: Menggunakan sambungan swoole diperlukan versi PHP>=7.0.
Dalam ThinkPHP6, anda boleh mencipta perkhidmatan WebSocket melalui arahan tersuai. Buka alat baris arahan, masukkan direktori akar projek, dan laksanakan arahan berikut:
php think make:command WebSocket
Selepas melaksanakan arahan, fail WebSocket.php akan dijana dalam direktori app/command. Dalam fail ini, tambahkan kod berikut:
<?php namespace appcommand; use swoole_websocket_server; use swoole_http_request; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; class WebSocket extends Command { protected function configure() { // 给命令起一个名字 $this->setName('swoole:websocket') ->setDescription('Start websocket server'); } protected function execute(Input $input, Output $output) { $server = new swoole_websocket_server("0.0.0.0", 9501); // 监听WebSocket连接打开事件 $server->on('open', function (swoole_websocket_server $server, swoole_http_request $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; // 广播消息给所有连接的客户端 $server->push($frame->fd, "this is server"); }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start(); } }
Laksanakan arahan berikut untuk memulakan perkhidmatan WebSocket:
php think swoole:websocket
Dalam paparan, anda boleh menggunakan API WebSocket JavaScript untuk berkomunikasi dengan pelayan dalam masa nyata. Contohnya:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket</title> </head> <body> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(){ console.log('WebSocket open'); }; ws.onmessage = function(ev){ console.log('WebSocket message: ' + ev.data); }; ws.onclose = function(){ console.log('WebSocket close'); }; </script> </body> </html>
Kod di atas mencipta tika WebSocket dan menyambung ke perkhidmatan WebSocket tempatan. Apabila pelayan menghantar mesej, fungsi onmessage dipanggil untuk diproses. Anda boleh menghantar mesej kepada pelayan dengan memanggil fungsi hantar contoh.
Pada ketika ini, perkhidmatan WebSocket telah berjaya dibuat dan mewujudkan sambungan komunikasi masa nyata dengan bahagian hadapan.
Ringkasan
Dalam ThinkPHP6, dengan bantuan sambungan swoole, fungsi komunikasi masa nyata WebSocket boleh dilaksanakan dengan mudah. Dengan mendayakan perkhidmatan WebSocket melalui arahan tersuai, dan menggabungkannya dengan JavaScript WebSocket API, komunikasi masa nyata boleh dicapai dalam aplikasi web untuk memenuhi pelbagai keperluan perniagaan.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan WebSocket untuk komunikasi masa nyata dalam ThinkPHP6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!