Rumah  >  Artikel  >  rangka kerja php  >  Menggunakan WebSocket dalam ThinkPHP6

Menggunakan WebSocket dalam ThinkPHP6

王林
王林asal
2023-06-21 12:49:393106semak imbas

Dengan perkembangan pesat teknologi Internet mudah alih, permintaan pengguna untuk pemesejan segera dan interaksi masa nyata telah meningkat secara beransur-ansur. Sebagai protokol penting untuk komunikasi masa nyata di Web, protokol WebSocket mempunyai ciri komunikasi dupleks penuh, tolakan masa nyata dan kependaman rendah, dan telah menjadi protokol pilihan dalam senario interaksi masa nyata. Oleh itu, dalam pembangunan web, kita perlu menguasai cara menggunakan WebSocket untuk mencapai komunikasi masa nyata.

Dalam PHP, kami boleh menggunakan sambungan Swoole untuk melaksanakan fungsi WebSocket. Walau bagaimanapun, ia memerlukan banyak masa dan usaha untuk menggunakan dan menyediakan Swoole Bagi sesetengah pembangun yang tidak biasa dengan Swoole, kos pembelajaran juga agak tinggi.

Hari ini, kami akan memperkenalkan cara menggunakan WebSocket dalam ThinkPHP6.

1. Pasang sambungan

Sebelum menggunakan WebSocket dalam ThinkPHP6, kami perlu memasang sambungan topthink/thinker.

composer require topthink/thinker:dev-master

topthink/thinker ialah alat baris arahan untuk menjalankan kod PHP dan mengurus tugas tak segerak dalam ThinkPHP6.

2. Konfigurasikan WebSocket

Kami perlu mengkonfigurasi WebSocket dalam fail konfigurasi projek config/socket.php.

<?php
return [
    // WebSocket服务器地址,使用内网穿透时填写内网地址
    'server' => '127.0.0.1:9501',

    // WebSocket的应用类,需要实现     hinkworkerServer 接口
    'worker_class' => 'appcontrollerWebSocket',
];

Kita perlu menentukan alamat server dan kelas Server yang melaksanakan antara muka worker_class Di sini kita menamakan kelas pengawal yang melaksanakan fungsi WebSocket WebSocket dan meletakkannya dalam appcontroller direktori Bawah.

3. Laksanakan WebSocket

Kami mencipta pengawal bernama appcontroller dalam direktori WebSocket dan melaksanakan antara muka Server dalam pengawal.

<?php
namespace appcontroller;

use thinkworkerServer;

class WebSocket implements Server
{
    protected $socket = 'websocket://127.0.0.1:9501';

    public function onMessage($connection, $data)
    {
        foreach ($this->worker->connections as $conn) {
            $conn->send('user ' . $connection->id . ' said: ' . $data);
        }
    }

    public function onConnect($connection)
    {
        echo "new connection from ip " . $connection->getRemoteIp() . "
";
    }

    public function onClose($connection)
    {
        echo "connection closed: " . $connection->id . "
";
    }

    public function onWorkerStart($worker)
    {
        // 初始化
    }
}

Dalam kelas pengawal WebSocket, kita perlu melaksanakan empat kaedah: onMessage, onConnect, onClose dan onWorkerStart.

  • onMessage: Apabila pelanggan menghantar data, kaedah onMessage akan dicetuskan Parameter $connection mewakili objek sambungan pelanggan dan $data mewakili data yang dihantar oleh klien. .
  • onConnect: Kaedah onConnect akan dicetuskan apabila klien menyambung. $connection
  • : Kaedah onClose akan dicetuskan apabila pelanggan memutuskan sambungan Parameter onClose mewakili objek sambungan pelanggan. $connection
  • : Kaedah onWorkerStart akan dicetuskan apabila proses pekerja dimulakan Parameter onWorkerStart mewakili objek proses pekerja semasa. $worker
4. Jalankan WebSocket

Selepas mengkonfigurasi WebSocket, kita boleh menggunakan perintah

untuk memulakan WebSocket. think

php think worker:start

Arahan di atas akan memulakan perkhidmatan WebSocket dan mengeluarkan log operasi pada konsol.

5. Test WebSocket

Selepas WebSocket dilaksanakan, kami boleh menggunakan klien WebSocket untuk ujian. Kami boleh menggunakan pelayar

dan memasang pemalam Chrome untuk menguji. Masukkan alamat pelayan WebSocket dalam pemalam dan klik Sambung untuk mula menggunakan komunikasi WebSocket. Simple WebSocket Client

Dalam

, kita boleh memasukkan aksara dan klik hantar, dan kita boleh melihat log keluaran dalam konsol latar belakang, menunjukkan bahawa komunikasi WebSocket berfungsi seperti biasa. Simple WebSocket Client

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan WebSocket dalam ThinkPHP6. Protokol WebSocket ialah protokol pilihan untuk komunikasi masa nyata dan senario penggunaannya sangat luas. Dalam pembangunan sebenar, kami boleh menggunakan WebSocket untuk melaksanakan fungsi komunikasi masa nyata dengan mudah mengikut keperluan dan meningkatkan pengalaman pengguna.

Atas ialah kandungan terperinci Menggunakan WebSocket dalam ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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