Rumah > rangka kerja php > Swoole > Cara menggunakan rangka kerja Hyperf untuk menolak mesej

Cara menggunakan rangka kerja Hyperf untuk menolak mesej

PHPz
Lepaskan: 2023-10-20 17:59:00
asal
1152 orang telah melayarinya

Cara menggunakan rangka kerja Hyperf untuk menolak mesej

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
Salin selepas log masuk

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
Salin selepas log masuk

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)
    {
        // 当客户端断开连接时触发
    }
}
Salin selepas log masuk

然后,修改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'],
            ],
        ],
    ],
];
Salin selepas log masuk

四、编写前端页面

接下来,我们需要编写一个前端页面来测试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>
Salin selepas log masuk

五、启动WebSocket服务器

最后,我们需要启动WebSocket服务器,让它监听客户端的连接和消息。在终端执行以下命令:

php bin/hyperf.php start
Salin selepas log masuk

至此,我们已经完成了一个使用Hyperf框架实现的简单消息推送功能。当我们访问http://localhost/index.htmlrrreee

Kemudian, ubah suai 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 halaman http://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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan