ホームページ >ウェブフロントエンド >jsチュートリアル >質問は次のとおりです。phpwebsocket の代替方法を使用して PHP で WebSocket サーバーを作成するにはどうすればよいですか?

質問は次のとおりです。phpwebsocket の代替方法を使用して PHP で WebSocket サーバーを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 07:13:30585ブラウズ

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

PHP で WebSocket サーバーを作成する方法

背景

WebSocket は全二重を提供します、既存の HTTP 接続を介したクライアントとサーバー間のリアルタイム通信チャネル。 PHP では、WebSocket サーバーの作成を支援するいくつかのフレームワークがあります。

PHPWebSocket コード

phpwebsocket ライブラリの更新が難しいとおっしゃいました。かつては人気がありましたが、古いため問題が発生する可能性があります。代替方法は次のとおりです:

サーバーの PHP コード

<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>

クライアントの JavaScript コード

<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>

Firefox の問題のトラブルシューティング

エラー メッセージによると、指定された URL でサーバーにアクセスできない可能性があります。次の点を確認してください:

  • サーバーが localhost:12345 で実行されていることを確認します。
  • ファイアウォール設定を確認して、WebSocket トラフィックが許可されていることを確認してください。
  • WebSocket サポートを有効にする

追加のヒント

  • WebSocket 関数を理解するには、PHP.net ドキュメントを使用してください。
  • を参照してください。技術的な詳細については、WebSocket ドラフトを参照してください。
  • メッセージのエンコードとデコードを正しく処理します。
  • ReactPHP WebSocket や CodeIgniter WebSocket などのより最新のライブラリの使用を検討してください。

以上が質問は次のとおりです。phpwebsocket の代替方法を使用して PHP で WebSocket サーバーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。