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

Susan Sarandon
Lepaskan: 2024-10-26 07:13:30
asal
517 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
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!