Komunikasi data masa nyata menggunakan PHP dan SignalR

王林
Lepaskan: 2023-06-28 09:58:01
asal
1268 orang telah melayarinya

Dengan perkembangan pesat Internet mudah alih, komunikasi masa nyata secara beransur-ansur menjadi keperluan yang sangat penting. Dalam komunikasi masa nyata, keperluan paling asas ialah komunikasi data masa nyata, yang memerlukan pelayan dapat menghantar data kepada pelanggan dalam masa nyata dan berinteraksi dalam masa nyata.

PHP dan SignalR ialah dua alat yang sangat berkuasa apabila ia datang untuk merealisasikan komunikasi data masa nyata. PHP ialah bahasa pembangunan yang sangat popular yang boleh digunakan untuk menulis kod sisi pelayan, manakala SignalR ialah rangka kerja komunikasi masa nyata yang boleh digunakan untuk melaksanakan komunikasi data masa nyata.

Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menggunakan PHP dan SignalR untuk mencapai komunikasi data masa nyata. Mula-mula kami akan memperkenalkan konsep asas dan prinsip kerja SignalR, dan kemudian memperkenalkan cara menggunakan PHP dan SignalR untuk membina pelayan dan klien untuk komunikasi data masa nyata. Akhir sekali, kami akan menggunakan contoh untuk menunjukkan cara menggunakan PHP dan SignalR untuk mencapai komunikasi data masa nyata.

1. Konsep asas dan prinsip kerja SignalR

SignalR ialah rangka kerja komunikasi masa nyata yang boleh digunakan untuk mencapai komunikasi data masa nyata. Ia berdasarkan WebSockets, tinjauan panjang, Acara Dihantar Pelayan (SSE) dan teknologi lain, dan boleh melakukan komunikasi data masa nyata pada penyemak imbas dan sistem pengendalian yang berbeza.

SignalR berfungsi dengan sangat mudah. Apabila pelanggan mewujudkan sambungan dengan pelayan, SignalR secara automatik akan memilih kaedah komunikasi yang paling sesuai (WebSockets, tinjauan panjang, SSE, dll.) dan mewujudkan sambungan berterusan antara pelayan dan klien. Apabila pelayan mempunyai data baharu yang perlu ditolak kepada klien, SignalR akan menghantar data secara automatik kepada klien dan mencetuskan peristiwa yang sepadan pada klien supaya klien boleh memproses data.

2. Gunakan PHP dan SignalR untuk membina pelayan dan klien untuk komunikasi data masa nyata

Untuk menggunakan PHP dan SignalR untuk membina pelayan dan klien untuk komunikasi data masa nyata, kami perlu memasang perpustakaan PHP SignalR terlebih dahulu. Anda boleh memasang pustaka PHP SignalR dengan menggunakan Komposer. Komposer boleh dipasang dalam baris arahan dengan arahan berikut:

    curl -sS https://getcomposer.org/installer | php
Pasang pustaka PHP SignalR

Gunakan arahan berikut untuk memasang pustaka PHP SignalR dalam baris arahan :

    komposer memerlukan signalwire/signalwire
  1. Selepas memasang pustaka PHP SignalR, kami boleh mula menulis kod pelayan dan klien.

Kod bahagian pelayan adalah seperti berikut:

<?php
require __DIR__ . '/vendor/autoload.php';

use SignalWireRestClient;
use SignalWireRelayStreamRoom;

$client = new Client('YOUR_PROJECT_ID', 'YOUR_AUTH_TOKEN');
$room = new Room($client, 'YOUR_ROOM_ID');

$room->on('data', function ($data) use ($room) {
    // 处理接收到的数据
});

$room->join();
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencipta contoh klien di bahagian pelayan menggunakan perpustakaan PHP SignalR. Kemudian, kami mendaftarkan fungsi panggil balik dalam contoh klien yang mengendalikan acara "data" Apabila pelanggan menerima data yang dihantar oleh pelayan, fungsi panggil balik akan dipanggil secara automatik. Akhir sekali, kami menyertai klien ke bilik SignalR dengan memanggil kaedah join().

Kod pada bahagian pelanggan kelihatan seperti ini:

<!doctype html>
<html>
<head>
    <title>SignalR Example</title>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@signalwire/js@0.14.2/dist/signalwire.min.js"></script>
</head>
<body>

<script>
const signalwire = new window.SignalWire.WebSocketEngine({
    host: 'relay.signalwire.com',
    project: 'YOUR_PROJECT_ID',
    token: 'YOUR_AUTH_TOKEN',
    room: 'YOUR_ROOM_ID',
});

signalwire.on('ready', () => {
    // 客户端连接成功后的处理
});

signalwire.on('open', () => {
    // 客户端打开连接后的处理
});

signalwire.on('data', (data) => {
    // 处理接收到的数据
});
</script>

</body>
</html>
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencipta contoh WebSocketEngine pada bahagian pelanggan melalui perpustakaan JavaScript SignalR. Kami kemudiannya mendaftarkan beberapa fungsi panggil balik acara pada contoh WebSocketEngine untuk mengendalikan pelbagai acara. Akhir sekali, kami boleh menghantar data ke pelayan melalui contoh WebSocketEngine.

3. Contoh Demonstrasi

Untuk menunjukkan cara menggunakan PHP dan SignalR untuk mencapai komunikasi data masa nyata, kami boleh mengambil ruang sembang sebagai contoh. Dalam bilik sembang ini, pengguna boleh memasukkan beberapa mesej teks pada klien, dan kemudian pelayan akan menolak mesej ini kepada pelanggan lain dalam masa nyata untuk interaksi masa nyata.

Untuk pelaksanaan kod khusus, sila rujuk contoh berikut:

// server.php
<?php
require __DIR__ . '/vendor/autoload.php';

use SignalWireRestClient;
use SignalWireRelayStreamRoom;

$client = new Client('YOUR_PROJECT_ID', 'YOUR_AUTH_TOKEN');
$room = new Room($client, 'YOUR_ROOM_ID');

$room->on('data', function ($data) use ($room) {
    foreach ($room->clients as $client) {
        $client->send($data);
    }
});

$room->join();
Salin selepas log masuk
<!-- index.html -->
<!doctype html>
<html>
<head>
    <title>SignalR Example</title>
    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@signalwire/js@0.14.2/dist/signalwire.min.js"></script>
</head>
<body>

<div>
    <input type="text" id="input" />
    <button id="send">Send</button>
</div>

<div id="messages"></div>

<script>
const signalwire = new window.SignalWire.WebSocketEngine({
    host: 'relay.signalwire.com',
    project: 'YOUR_PROJECT_ID',
    token: 'YOUR_AUTH_TOKEN',
    room: 'YOUR_ROOM_ID',
});

signalwire.on('ready', () => {
    console.log('Connected to the server.');
});

signalwire.on('open', () => {
    console.log('Connection opened.');
});

signalwire.on('data', (data) => {
    $('#messages').append('<p>' + data + '</p>');
});

$('#send').on('click', () => {
    const message = $('#input').val();
    signalwire.send(message);
    $('#input').val('');
});
</script>

</body>
</html>
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencipta bilik SignalR pada pelayan Apabila pelanggan menyambung ke pelayan, ia akan menyertai bilik ini. Apabila salah satu pelanggan menghantar mesej, pelayan menghantar mesej ini kepada pelanggan lain untuk mencapai komunikasi masa nyata.

Dalam klien, kami mencipta kotak input teks dan butang "Hantar" Apabila pengguna memasukkan teks dalam kotak input teks dan mengklik butang "Hantar", teks akan dihantar ke pelayan, dan kemudian pelayan. akan Menghantar teks ini kepada pelanggan lain untuk komunikasi masa nyata.

Ringkasan

Sangat mudah untuk melaksanakan komunikasi data masa nyata menggunakan PHP dan SignalR Anda hanya perlu menggunakan perpustakaan PHP SignalR dan perpustakaan JavaScript. Apabila melaksanakan komunikasi data masa nyata, kami boleh merealisasikan hubungan antara pelanggan melalui bilik SignalR, dan menggunakan acara dan fungsi panggil balik SignalR untuk mengendalikan interaksi antara pelayan dan klien.

Atas ialah kandungan terperinci Komunikasi data masa nyata menggunakan PHP dan SignalR. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!