Rumah pembangunan bahagian belakang tutorial php Tutorial lengkap tentang melaksanakan komunikasi masa nyata menggunakan PHP dan Swoole

Tutorial lengkap tentang melaksanakan komunikasi masa nyata menggunakan PHP dan Swoole

Jun 28, 2023 am 08:12 AM
php komunikasi masa nyata swoole

Dengan perkembangan pesat teknologi Internet dan komunikasi mudah alih, komunikasi masa nyata telah menarik lebih banyak perhatian. Komunikasi masa nyata boleh merealisasikan pemesejan segera antara pengguna, panggilan audio dan video dalam talian, pertempuran permainan dan fungsi lain, membawa lebih banyak kemungkinan kepada aplikasi Internet.

Artikel ini akan memperkenalkan cara menggunakan PHP dan Swoole untuk mencapai komunikasi masa nyata Bermula daripada aplikasi WebSocket yang mudah, kami akan memperkenalkan secara beransur-ansur pengetahuan asas pengaturcaraan Socket dan amalan aplikasi Swoole. Membaca artikel ini memerlukan pengetahuan asas tentang asas PHP dan pengaturcaraan rangkaian.

1. Asas WebSocket

WebSocket ialah protokol komunikasi dua hala berdasarkan protokol HTTP Ia menggunakan protokol yang dipanggil "jabat tangan" untuk membolehkan komunikasi dua hala. Kelebihan sambungan WebSocket ialah overhednya sangat kecil, komunikasi masa nyata sangat baik, dan komunikasi masa nyata dua hala boleh diwujudkan antara pelanggan dan pelayan.

Penubuhan WebSocket memerlukan langkah berikut:

1 Penyemak imbas memulakan permintaan jabat tangan WebSocket ke pelayan Tajuk permintaan mengandungi beberapa medan utama, seperti Naik Taraf, Sambungan, Sec-WebSocket-Key, dsb.

2 Pelayan memproses permintaan WebSocket pelanggan, dan jika ia memenuhi spesifikasi, mengembalikan mesej respons dengan medan seperti Naik Taraf, Sambungan dan Sec-WebSocket-Accept dalam pengepala respons.

3 Pelanggan menerima mesej respons daripada pelayan, menyemak medan Sec-WebSocket-Accept, dan mengesahkan bahawa jabat tangan WebSocket berjaya diwujudkan.

4 Kedua-dua pihak boleh memulakan komunikasi data dan boleh menghantar mesej teks, binari, Ping, Pong dan lain-lain.

Menggunakan WebSocket dalam PHP, kami boleh melaksanakannya melalui perkhidmatan WebSocket yang disediakan oleh Swoole. Berikut memperkenalkan aplikasi asas Swoole.

2. Asas Swoole

1. Pasang Swoole

Sebelum mula menggunakan Swoole, kita perlu memasang sambungan Swoole pada pelayan. Anda boleh memasangnya dengan arahan berikut:

pecl install swoole

atau pasang dari kod sumber:

$ wget https://github.com/swoole/swoole-src/archive/v4.3.3.tar. gz
$ tar zxvf v4.3.3.tar.gz
$ cd swoole-src-4.3.3
$ phpize
$ ./configure
$ make && make install --with-swoole

  1. Swoole service
Swoole WebSocket

Mari kita laksanakan satu Perkhidmatan WebSocket mudah yang mendengar port 9501 dan menghantar mesej helo kepada pelanggan apabila pelanggan membuat sambungan dengan pelayan.

<?php

$server = new SwooleWebSocketServer("0.0.0.0", 9501);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "new client connected
";
    $server->push($request->fd, "hello");
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
});

$server->start();
Salin selepas log masuk

Dalam kod ini, kami mencipta pelayan WebSocket baharu dan mendengar pada port 9501. Apabila pelanggan mewujudkan sambungan dengan pelayan, acara terbuka dicetuskan dan mesej helo dihantar kepada klien. Apabila pelanggan menghantar mesej kepada pelayan, peristiwa mesej dicetuskan, dan kita boleh menggunakan gema untuk mengeluarkan maklumat yang dihantar oleh klien.

Selepas memulakan kod di atas, kita boleh menggunakan pelayar atau klien WebSocket untuk menyambung ke pelayan:

let ws = new WebSocket('ws://127.0.0.1:9501');
ws.onopen = function(event) {
    console.log('WebSocket connected');
};
ws.onmessage = function(event) {
    console.log('Received:', event.data);
};
ws.send('Hello, Server');
Salin selepas log masuk

Selepas pelanggan berjaya menyambung, konsol akan mengeluarkan maklumat berikut:

WebSocket connected
Received: hello
Salin selepas log masuk

Menunjukkan bahawa pelanggan telah berjaya menerima mesej hello yang dihantar oleh pelayan.

3. Laksanakan aplikasi sembang masa nyata

Seterusnya, marilah kami melaksanakan aplikasi sembang masa nyata yang membolehkan berbilang pengguna berkomunikasi dalam masa nyata dalam bilik sembang. Ini memerlukan kami untuk terus mengembangkan pelayan WebSocket di atas untuk melaksanakan fungsi asas ruang sembang.

<?php

$server = new SwooleWebSocketServer("0.0.0.0", 9501);

$server->set([
    'worker_num' => 2,    //启动2个Worker进程
]);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "new client connected
";
    foreach($server->connections as $fd) {
        $server->push($fd, "{$request->fd} joined the room");
    }
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    foreach($server->connections as $fd) {
        if ($fd != $frame->fd) {
            $server->push($fd, "user {$frame->fd}: {$frame->data}");
        }
    }
});

$server->on('close', function ($server, $fd) {
    echo "client {$fd} closed
";
    foreach($server->connections as $fds) {
        $server->push($fds, "{$fd} quited the room");
    }
});

$server->start();
Salin selepas log masuk

Dalam kod di atas, kami menambah pengendalian acara terbuka dan tutup. Apabila pengguna menyambung atau menutup sambungan, mesej untuk menyertai atau meninggalkan bilik sembang akan dihantar kepada pengguna lain yang disambungkan. Apabila pengguna menghantar mesej dalam bilik sembang, mesej itu disiarkan kepada pengguna dalam talian yang lain.

Selepas memulakan kod di atas, kami boleh menggunakan berbilang tetingkap pelayar untuk menyambung ke pelayan secara berasingan dan memasuki bilik sembang yang sama. Apabila pengguna menghantar mesej, pengguna lain boleh menerima mesej dalam masa nyata.

Artikel ini memperkenalkan cara menggunakan PHP dan Swoole untuk mencapai komunikasi masa nyata, daripada aplikasi WebSocket asas kepada aplikasi bilik sembang masa nyata. Swoole menyediakan kaedah pengaturcaraan tak segerak yang lebih fleksibel, menjadikannya lebih mudah untuk menulis aplikasi berprestasi tinggi, tinggi konkurensi dan kependaman rendah.

Atas ialah kandungan terperinci Tutorial lengkap tentang melaksanakan komunikasi masa nyata menggunakan PHP dan Swoole. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles