swooleチャットルーム

サーバー:

<?PHPの
クラスのチャット
{ 
    HOST = '0.0.0.0'とのconst; // IPアドレスIP 0.0.0.0代表は、すべてのアクセス受け入れ
    //ポート番号;のconst PART = 8080 

    プライベート$サーバー=ヌル; //シングルトンオブジェクトを格納しwebsocket_server 

    __construct関数パブリック()
    { 
        // swoole_websocket_serverをインスタンス化し、私たちのチャットクラス属性に保存されている、単一の実施形態に設計する上
        > =新しい新しいswoole_websocket_serverサーバー(自己:: HOST、PART ::セルフ)の$ this -を; 
        //リスナー接続イベント
        ([$この、 '開く時']、 '開く')ONの$ this - >サーバ- > 
        //モニタ受信したイベントメッセージ
        ( '上の$ this - >サーバ- >メッセージ'、[$この、「のonMessage ']); 
        // closeイベントをリッスン
        (上の$ this - >サーバー- >' '[$この、' OnCloseの「])に近いです。
        //静的ファイルへのアクセスを許可するように設定し
        ます$ this->サーバー- >セット([
            'DOCUMENT_ROOT' => '/ WWW / chat1'、// どこincomingディレクトリの静的ファイル
            'enable_static_handler' =>真//静的ファイルへのアクセスを許可
        ]); 


        //サービスを開始し
        ます$ this->サーバー- >開始() ; 
    } 

    / ** 
     *接続に成功コールバック
     * @paramサーバーの$ 
     *の@param要求$ 
     * / 
    パブリック関数開く時(サーバーの$、$リクエスト)
    { 
        $要求- > FD '接続' PHP_EOL ;. //印刷をエコー。私たちのターミナル
    } 

    / ** 
     *コールバック関数は、情報を受信
     * @paramサーバの$ 
     * @paramのフレームの$ 
     * /  
    パブリック関数のonMessage(サーバの$、$フレーム)
    {
        エコーフレーム- $> FDは'来たと言った:' $フレーム- >データPHP_EOL; / ... /私たちの端末に印刷します 
        foreachの($ FD AS $サーバー- >接続が){// TCPコネクショントラバーサルイテレータ、取ります各オンラインのクライアントIDに
            クライアントから送信された//メッセージ、すべてのユーザーにプッシュ、また、すべてのオンラインのクライアントにブロードキャスト呼び出すことができ
            ます$ server->プッシュ($ FD、 json_encode([「ノー」=> $ フレーム- > FD、 'MSG' => $フレーム- > [データ])); 
        } 
    } 

    / ** 
     *切断コールバック
     * @paramサーバーの$ 
     *の@paramの$ FD 
     * / 
    パブリック関数OnCloseの(サーバーの$、$ FD)
    { 
        $ FD 'GO' PHP_EOLをエコー;. //私たちの端子を印刷する。
    } 

} 

$ OBJ =新しい新しいチャット();

  クライアント


<スクリプト> 
    関数リンク(){ 
        VARのURL = 'WS://192.168.33.60:8080'。
        ソケット=新しいのWebSocket(URL); 
        socket.onopen =関数(){LOG1( '连接成功')}




















        socket.onmessage =関数(MSG){ログ(msg.data)にconsole.log(MSG);} 

        socket.onclose =関数(){LOG1( '断开连接')} 

    } 

    関数DIS(){ 

        socket.close (); 

        ソケット= NULL; 

    } 

    関数LOG1(VAR1){ 
        $( 'ログイン')(VAR1 +' \ R \ n')追加。
    } 
    関数ログ(VAR1){ 
        VARのV = $ parseJSON(VAR1)。
        $(」ログイン'')用户'+ V ['いいえ'] +(付加'说: '+ V [' MSG '] + [ \ Rを\ n '); 
    } 

    関数センド(){ 
        VARテキスト= $( '#テキスト')のval()。

        socket.send(テキスト); 
    } 

    関数SEND2(){ 

        VARのJSON = JSON.stringify({ 'タイプ':

        socket.send(JSON)。

    } 

</ SCRIPT> 

</ body> 

</ HTML>

  

サーバを起動します

PHP Chat.php

 

HTMLを開くには、クライアントのブラウザへのアクセス

 

 

 

参考https://www.jianshu.com/p/ac77f05bee56

おすすめ

転載: www.cnblogs.com/php-linux/p/11526305.html