Rumah > rangka kerja php > Workerman > Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan WebSocket

Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan WebSocket

WBOY
Lepaskan: 2023-11-07 15:29:01
asal
1433 orang telah melayarinya

Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan WebSocket

Cara menggunakan Workerman untuk melaksanakan pelayan WebSocket

Dengan peningkatan populariti teknologi WebRTC, komunikasi masa nyata permainan, sembang dalam talian dan lain-lain aplikasi, teknologi WebSocket juga menjadi semakin penting. Workerman ialah rangka kerja rangkaian TCP, UDP, dan Unix Socket tak segerak berprestasi tinggi yang berjalan dalam persekitaran PHP Ia sememangnya menyokong konkurensi tinggi dan sangat sesuai untuk membangunkan pelayan WebSocket.

Artikel ini akan memperkenalkan secara terperinci cara menggunakan Workerman untuk melaksanakan pelayan WebSocket, termasuk cara mengendalikan sambungan WebSocket, cara menghantar dan menerima mesej WebSocket, dan cara menyepadukan rangka kerja dengan perpustakaan lain. Kod sampel lengkap juga disediakan di penghujung artikel.

  1. Install Workerman

Sebelum anda mula menggunakan Workerman, anda perlu memasangnya terlebih dahulu. Ia boleh dipasang melalui Komposer, atau anda boleh memuat turun kod sumber terus dari GitHub dan memasangnya secara manual. Di sini kami mengambil pemasangan Komposer sebagai contoh:

composer require workerman/workerman
Salin selepas log masuk
Salin selepas log masuk
  1. Menulis kod pelayan WebSocket

Sebelum menggunakan Workerman untuk melaksanakan pelayan WebSocket, anda perlu memahami prinsip kerja WebSocket. WebSocket ialah protokol sambungan jangka panjang dupleks penuh Pelanggan dan pelayan membuat sambungan melalui jabat tangan, dan kemudian boleh menghantar mesej kepada satu sama lain. Mesej WebSocket boleh menjadi sebarang data seperti teks, perduaan atau fail, dan pelayan boleh memprosesnya secara berbeza bergantung pada jenis mesej.

Melaksanakan pelayan WebSocket menggunakan Workerman adalah sangat mudah dan hanya memerlukan beberapa baris kod untuk diselesaikan. Berikut ialah contoh:

require_once __DIR__ . '/vendor/autoload.php';
use WorkermanWorker;

// 创建一个Worker监听8090端口,使用websocket协议通讯
$wsWorker = new Worker("websocket://0.0.0.0:8090");

// 启动4个进程对外提供服务
$wsWorker->count = 4;

// 处理WebSocket连接的回调函数
$wsWorker->onConnect = function($connection) {
    echo "New connection
";
};

// 处理WebSocket消息的回调函数
$wsWorker->onMessage = function($connection, $data) {
    // 处理消息...
};

// 启动Worker
Worker::runAll();
Salin selepas log masuk

Pertama, kami mencipta tika Pekerja dan menentukannya untuk mendengar pada port 8090 dan berkomunikasi menggunakan protokol websocket. Kemudian sediakan 4 proses untuk mula mengendalikan sejumlah besar sambungan serentak. Pekerja menyokong berbilang protokol penghantaran seperti TCP, UDP dan Unix Socket, jadi kita perlu menentukan protokol WebSocket.

Dalam contoh ini, kami hanya mentakrifkan dua fungsi panggil balik:

  1. Apabila sambungan WebSocket baharu diwujudkan, fungsi panggil balik onConnect akan dipanggil, Kami boleh merakam log, mengira pengguna dalam talian dan operasi lain di sini.
  2. Apabila mesej WebSocket diterima, fungsi panggil balik onMessage akan dipanggil Kami perlu memproses mesej di sini, seperti melakukan pengiraan mudah, menghantar balasan, dsb.
  3. Langkah terakhir ialah memulakan Worker, yang akan mula mendengar port yang ditentukan dan mengendalikan sambungan dan mesej WebSocket.
  4. WebSocket pemprosesan mesej

Melalui fungsi panggil balik onMessage, kami boleh menerima mesej WebSocket yang dihantar oleh pelanggan, dan format data boleh berupa teks atau binari. Cara memproses mesej WebSocket bergantung pada senario aplikasi Contohnya, aplikasi sembang dalam talian mungkin perlu melaksanakan fungsi seperti penyiaran dan sembang titik ke titik, manakala aplikasi permainan perlu melaksanakan komunikasi masa nyata peringkat mikrosaat.

Berikut ialah contoh mudah yang mencetak mesej yang diterima dan membalas kepada pelanggan:

$wsWorker->onMessage = function($connection, $data) {
    echo "Received message: {$data}
";
    $connection->send("Received: {$data}");
};
Salin selepas log masuk

Status sambungan WebSocket

Selepas WebSocket sambungan diwujudkan, sambungan antara klien dan pelayan tetap terbuka. Melalui fungsi panggil balik onClose, kami boleh mengendalikan peristiwa terputus sambungan:

$wsWorker->onClose = function($connection) {
    echo "Connection closed
";
};
Salin selepas log masuk
  1. Rangka kerja bersepadu

Workerman boleh disepadukan dengan mudah dengan rangka kerja lain. Di sini kami mengambil rangka kerja Laravel sebagai contoh untuk memperkenalkan cara menggunakan Workerman untuk melaksanakan pelayan WebSocket dalam Laravel.

Pertama, kita perlu memasang Workerman dalam projek Laravel:

composer require workerman/workerman
Salin selepas log masuk
Salin selepas log masuk

Seterusnya, kita boleh mencipta arahan Artisan tersuai untuk memulakan pelayan WebSocket:

php artisan make:command WebSocketServer
Salin selepas log masuk
# 🎜🎜#Kemudian tulis kod dalam fail app/Console/Commands/WebSocketServer.php:

<?php

namespace AppConsoleCommands;

use IlluminateConsoleCommand;
use WorkermanWorker;

class WebSocketServer extends Command {
    // 命令名称
    protected $name = 'websocket:server';

    // 命令描述
    protected $description = 'Start WebSocket server';

    // 执行命令
    public function handle() {
        // 创建Worker实例,监听8080端口
        $wsWorker = new Worker("websocket://0.0.0.0:8080");

        // 进程数量
        $wsWorker->count = 4;

        // 处理连接事件
        $wsWorker->onConnect = function($connection) {
            echo "New connection
";
        };

        // 处理消息事件
        $wsWorker->onMessage = function($connection, $data) {
            // 处理消息
        };

        // 运行Worker
        Worker::runAll();
    }
}
Salin selepas log masuk

Akhir sekali, kita boleh memulakan pelayan WebSocket melalui arahan berikut:

rreee#🎜🎜 #Ya Lihat, melaksanakan pelayan WebSocket menggunakan Workerman adalah sangat mudah dan boleh disepadukan dengan mudah ke dalam rangka kerja lain.

Contoh kod penuh
  1. Berikut ialah contoh pelayan WebSocket yang lengkap, yang boleh menerima mesej yang dihantar oleh pelanggan dan melaksanakan pemprosesan mudah, dan balas hasil pemprosesan kepada pelanggan:
php artisan websocket:server
Salin selepas log masuk

Di atas adalah semua kandungan menggunakan Workerman untuk melaksanakan pelayan WebSocket Melalui pengenalan artikel ini, saya percaya bahawa pembaca telah menguasai pengetahuan teknikal yang berkaitan. dan pada masa yang sama Anda boleh menggunakan teknik ini dalam projek sebenar untuk pembangunan.

Atas ialah kandungan terperinci Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan WebSocket. 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