Rumah > rangka kerja php > ThinkPHP > Bagaimana untuk menggunakan WebSocket untuk komunikasi masa nyata dalam ThinkPHP6?

Bagaimana untuk menggunakan WebSocket untuk komunikasi masa nyata dalam ThinkPHP6?

WBOY
Lepaskan: 2023-06-12 10:40:39
asal
2098 orang telah melayarinya

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?

  1. Pasang sambungan swoole

Mula-mula anda perlu memasang sambungan swoole pada pelayan Anda boleh menggunakan arahan komposer untuk memasang:

composer require swoole/swoole
Salin selepas log masuk

Nota: Menggunakan sambungan swoole diperlukan versi PHP>=7.0.

  1. Buat perkhidmatan WebSocket

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

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();
    }
}
Salin selepas log masuk

Laksanakan arahan berikut untuk memulakan perkhidmatan WebSocket:

php think swoole:websocket
Salin selepas log masuk
  1. Gunakan WebSocket dalam paparan

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

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!

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