Rumah  >  Artikel  >  hujung hadapan web  >  Persoalannya mungkin: Bagaimana untuk membuat pelayan WebSocket dalam PHP dengan kaedah alternatif kepada phpwebsocket?

Persoalannya mungkin: Bagaimana untuk membuat pelayan WebSocket dalam PHP dengan kaedah alternatif kepada phpwebsocket?

Susan Sarandon
Susan Sarandonasal
2024-10-26 07:13:30518semak imbas

The question could be: How to create WebSocket servers in PHP with alternative methods to phpwebsocket?

Cara Membuat Pelayan Websocket dalam PHP

Latar Belakang

WebSockets menyediakan dupleks penuh , saluran komunikasi masa nyata antara pelanggan dan pelayan melalui sambungan HTTP sedia ada. Dalam PHP, beberapa rangka kerja membantu dalam penciptaan pelayan WebSocket.

Kod PHPWebSocket

Anda telah menyebut kesukaran dalam mengemas kini perpustakaan phpwebsocket. Walaupun ia pernah popular, usianya mungkin menimbulkan isu. Berikut ialah kaedah alternatif:

Kod PHP untuk Pelayan

<code class="php"><?php
// Create WebSocket server on localhost:12345
$master = WebSocket("localhost", 12345);

// Initialize sockets and user arrays
$sockets = array($master);
$users = array();

while (true) {
    $changed = $sockets;
    socket_select($changed, $write = NULL, $except = NULL, NULL);
    
    foreach ($changed as $socket) {
        if ($socket == $master) {
            // Handle new client connections
            $client = socket_accept($master);
            if ($client < 0) {
                echo "socket_accept() failed\n";
                continue;
            } else {
                connect($client);
            }
        } else {
            // Handle incoming data from clients
            $bytes = @socket_recv($socket, $buffer, 2048, 0);
            if ($bytes == 0) {
                disconnect($socket);
            } else {
                $user = getuserbysocket($socket);
                if (!$user->handshake) {
                    dohandshake($user, $buffer);
                } else {
                    process($user, $buffer);
                }
            }
        }
    }
}</code>

Kod JavaScript untuk Pelanggan

<code class="javascript">var connection = new WebSocket('ws://localhost:12345');
connection.onopen = function () {
    connection.send('Ping'); // Send 'Ping' message to server
};

// Log errors
connection.onerror = function (error) {
    console.log('WebSocket Error ' + error);
};

// Log messages from server
connection.onmessage = function (e) {
    console.log('Server: ' + e.data);
};</code>

Menyelesaikan masalah Isu Firefox

Berdasarkan mesej ralat anda, pelayan mungkin tidak boleh diakses di URL yang ditentukan. Semak perkara berikut:

  • Pastikan pelayan berjalan pada localhost:12345.
  • Semak tetapan tembok api anda untuk memastikan trafik WebSocket dibenarkan.
  • Dayakan sokongan WebSocket dalam penyemak imbas Firefox anda.

Petua Tambahan

  • Gunakan dokumentasi PHP.net untuk memahami fungsi WebSocket.
  • Rujuk kepada Draf WebSocket untuk butiran teknikal.
  • Kendalikan pengekodan dan penyahkodan mesej dengan betul.
  • Pertimbangkan untuk menggunakan perpustakaan yang lebih terkini seperti ReactPHP WebSocket atau CodeIgniter WebSocket.

Atas ialah kandungan terperinci Persoalannya mungkin: Bagaimana untuk membuat pelayan WebSocket dalam PHP dengan kaedah alternatif kepada phpwebsocket?. 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