Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan php untuk membangunkan Websocket untuk melaksanakan fungsi sembang segera

Gunakan php untuk membangunkan Websocket untuk melaksanakan fungsi sembang segera

WBOY
WBOYasal
2023-12-02 13:28:091275semak imbas

Gunakan php untuk membangunkan Websocket untuk melaksanakan fungsi sembang segera

Gunakan PHP untuk membangunkan Websocket bagi melaksanakan fungsi sembang segera

Websocket ialah protokol komunikasi dupleks penuh, sesuai untuk senario komunikasi masa nyata, seperti sembang segera, kemas kini data masa nyata, dsb. Sebagai bahasa pengaturcaraan sebelah pelayan yang popular, PHP juga boleh melaksanakan fungsi Websocket melalui perpustakaan dan sambungan yang berkaitan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk membangunkan Websocket Contoh kod khusus adalah seperti berikut.

Pertama, anda perlu memastikan pelayan menyokong protokol Websocket. Dalam PHP, anda boleh menggunakan perpustakaan Ratchet untuk melaksanakan pelayan Websocket. Ratchet ialah perpustakaan berasaskan ReactPHP yang menyediakan antara muka operasi yang mudah dan fleksibel.

  1. Pasang perpustakaan Ratchet

Gunakan Komposer untuk memasang perpustakaan Ratchet, yang boleh dilaksanakan dalam direktori projek melalui arahan berikut:

composer require cboden/ratchet
  1. Buat pelayan Websocket
dalam fail bernamaC.phpate

direktori akar fail projek dan tulis kod berikut:

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

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

class Chat implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New connection! ({$conn->resourceId})
";
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        foreach ($this->clients as $client) {
            if ($client !== $from) {
                $client->send($msg);
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Connection {$conn->resourceId} has disconnected
";
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        echo "An error occurred: {$e->getMessage()}
";
        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

echo "Server running at http://localhost:8080
";

$server->run();
  1. Mulakan pelayan Websocket

Masukkan direktori akar projek pada baris arahan dan laksanakan arahan berikut untuk memulakan pelayan Websocket:

rreee

Pada ketika ini , pelayan Websocket telah dimulakan dan sedang mendengar pada port 8080. Ia boleh diakses melalui http://localhost:8080.

  1. Menulis halaman hadapan

Buat fail bernama index.html dalam direktori projek dan tulis kod berikut:

php -f server.php

Buka fail index.html dalam penyemak imbas dan anda akan melihat fail untuk menghantar mesej kotak input dan butang. Masukkan mesej dalam kotak input dan klik butang hantar untuk menghantar mesej ke pelayan.

  1. Uji program

Buka berbilang tetingkap atau tab penyemak imbas, masukkan mesej yang berbeza masing-masing, dan klik butang hantar. Anda akan mendapati bahawa mesej akan disiarkan kepada semua pelanggan yang disambungkan.

Pada ketika ini, kami telah berjaya membangunkan pelayan Websocket mudah menggunakan PHP untuk melaksanakan fungsi sembang segera. Melalui enkapsulasi perpustakaan Ratchet, kami boleh melaksanakan aplikasi Websocket yang kompleks dengan cepat. Saya harap artikel ini membantu anda, dan saya mengucapkan selamat berprogram!

Atas ialah kandungan terperinci Gunakan php untuk membangunkan Websocket untuk melaksanakan fungsi sembang segera. 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