Cara menggunakan rangka kerja Hyperf untuk push mesej
Dengan perkembangan Internet, push mesej masa nyata semakin menjadi-jadi popular dalam banyak senario aplikasi penting. Sebagai rangka kerja mikroperkhidmatan PHP berprestasi tinggi, rangka kerja Hyperf mempunyai ciri-ciri ringan, kependaman rendah dan konkurensi tinggi, dan sangat sesuai untuk tolakan mesej masa nyata. Artikel ini akan memperkenalkan cara melaksanakan push mesej dalam rangka kerja Hyperf dan memberikan contoh kod khusus.
1 Pasang rangka kerja Hyperf
Pertama, kita perlu memasang rangka kerja Hyperf. Ia boleh dipasang melalui arahan komposer:
composer create-project hyperf/hyperf-skeleton
2. Pasang sambungan Swoole
Lapisan asas rangka kerja Hyperf menggunakan sambungan Swoole, jadi kita perlu memasang Sambungan swoole dahulu. Ia boleh dipasang melalui arahan berikut:
pecl install swoole
3. Buat pelayan WebSocket
Dalam rangka kerja Hyperf, anda boleh menggunakan pelayan WebSocket untuk melaksanakan push mesej masa nyata . Kita perlu mencipta pengawal WebSocket untuk mengendalikan sambungan dan mesej pelanggan.
Pertama, cipta fail AppControllerWebSocketController
dan tulis kod berikut: AppControllerWebSocketController
文件,编写如下代码:
<?php declare(strict_types=1); namespace AppController; use HyperfWebSocketServerContext; use HyperfWebSocketServerSender; class WebSocketController { public function onConnect($fd) { // 当客户端连接时触发 } public function onMessage($fd, $data) { // 当接收到客户端消息时触发 $sender = make(Sender::class); $sender->push($fd, 'Hello, ' . $data); } public function onClose($fd) { // 当客户端断开连接时触发 } }
然后,修改config/autoload/server.php
文件,添加WebSocket服务器的配置:
<?php declare(strict_types=1); return [ 'servers' => [ [ 'name' => 'websocket', 'type' => Server::TYPE_WEB_SOCKET, 'host' => '0.0.0.0', 'port' => 9502, 'sock_type' => SWOOLE_SOCK_TCP, 'callbacks' => [ Event::ON_HAND_SHAKE => [HyperfWebSocketServerListenerHandShakeListener::class, 'onHandShake'], Event::ON_MESSAGE => [AppControllerWebSocketController::class, 'onMessage'], Event::ON_CLOSE => [AppControllerWebSocketController::class, 'onClose'], ], ], ], ];
四、编写前端页面
接下来,我们需要编写一个前端页面来测试WebSocket服务器。在public
目录下创建一个index.html
文件,编写如下代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket Demo</title> </head> <body> <input type="text" id="message" placeholder="请输入消息"> <button onclick="sendMessage()">发送</button> <script> var ws = new WebSocket("ws://localhost:9502"); ws.onopen = function() { console.log("连接成功"); }; ws.onmessage = function(evt) { console.log("收到消息:" + evt.data); }; function sendMessage() { var message = document.getElementById("message").value; ws.send(message); }; </script> </body> </html>
五、启动WebSocket服务器
最后,我们需要启动WebSocket服务器,让它监听客户端的连接和消息。在终端执行以下命令:
php bin/hyperf.php start
至此,我们已经完成了一个使用Hyperf框架实现的简单消息推送功能。当我们访问http://localhost/index.html
rrreee
config/autoload/server.php fail, tambahkan konfigurasi pelayan WebSocket: <p>rrreee</p> 4. Tulis halaman hadapan hadapan <p></p> Seterusnya, kita perlu menulis halaman hadapan untuk menguji pelayan WebSocket. Cipta fail <code>index.html
dalam direktori public
dan tulis kod berikut: rrreee
5. Mulakan pelayan WebSocket #🎜🎜## 🎜🎜 #Akhir sekali, kita perlu memulakan pelayan WebSocket dan biarkan ia mendengar sambungan dan mesej pelanggan. Jalankan arahan berikut dalam terminal: #🎜🎜#rrreee#🎜🎜#Setakat ini, kami telah melengkapkan fungsi tolak mesej ringkas yang dilaksanakan menggunakan rangka kerja Hyperf. Apabila kami melawati halamanhttp://localhost/index.html
, sambungan ke pelayan WebSocket akan diwujudkan Kemudian kami memasukkan mesej dan klik butang hantar, dan kami boleh melihat mesej yang diterima dalam konsol. #🎜🎜##🎜🎜#Perlu diingatkan bahawa artikel ini hanya menyediakan contoh mudah untuk menunjukkan cara menggunakan WebSocket dalam rangka kerja Hyperf untuk push mesej masa nyata. Aplikasi sebenar mungkin mempunyai keperluan yang lebih kompleks, yang memerlukan pengembangan dan pengoptimuman yang sepadan mengikut senario tertentu. #🎜🎜##🎜🎜#Ringkasan#🎜🎜##🎜🎜#Artikel ini memperkenalkan cara menggunakan WebSocket dalam rangka kerja Hyperf untuk melaksanakan push mesej masa nyata dan menyediakan contoh kod yang sepadan. Dengan mempelajari artikel ini, saya percaya anda sudah mempunyai pemahaman tertentu tentang cara menolak mesej dalam rangka kerja Hyperf. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca! #🎜🎜#Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk menolak mesej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!