2

PHP-Websocket を使用した小さなプロジェクトに取り組んでいます。

サーバー側は、このhttps://github.com/ghedipunk/PHP-Websocketsで実行されています

サーバ側:

require "PHP-Websockets/websockets.php";

class Server extends WebSocketServer
{
    private $_connecting = 'Connecting..';
    private $_welcome = 'SOCKET SERVER!';


    protected function connected($user)
    {
        // Send welcome message to user when connected

    }    



    protected function process($user, $message)
    {
        // data sent from client
        $json = json_decode($message);

        //prepare data response to client
        $response = json_encode(array('type'=>'notify', 'message'=>'Client'.$user->id.' has sent a request.'));
        $this->send($user, $response);
    }

    protected function closed($user)
    {
        // Alert on server
        echo "User $user->id has closed the connection".PHP_EOL;
    }

    public function __destruct()
    {
        echo "Server Closed!".PHP_EOL;
    }
}

$addr = 'localhost';
$port = '2207';
$server = new Server($addr, $port);
$server->run();

クライアント側:

<script>
var uri = "ws://localhost:2207";
function socket_connect(){
    socket = new WebSocket(uri);
    if(!socket || socket == undefined) return false;

    socket.onopen = function(){
        console.log('Connected to Server!');
    }

    socket.onerror = function(){
        console.log('Connection Failed!');
    }

    socket.onclose = function(){
        socket_log('Connection Closed! ')
    }

    socket.onmessage = function(e){
        //var response_data = e.data;
        var msg = JSON.parse(e.data); //PHP sends Json data to client
        console.log(msg.message);
        var new_response = '<li>'+msg.message+'</li>;
        $('#response').append(new_response);
    }
}

function send_data_to_server(data){
    if(!socket || socket == undefined) return false;
    socket.send(JSON.stringify(data));
}

$(document).ready(function(){
    socket_connect();


    $('#send_request').click(function(){
        send_data_to_server({message: 'Message sent from Client'});
    });
});
</script>

<input type="button" id="send_request" value="Send Request to Server" />

<ul id="responses"></ul>

上記のコードではすべて正常に動作します。

Client1 がサーバーに要求を送信すると、サーバーは即座に応答します。しかし、他のクライアントは応答メッセージを見ることができません。

クライアントがサーバーにリクエストを送信すると、サーバーはすべてのクライアントに応答してすべてのクライアントがメッセージを見ることができるようにします。

どうやってやるの?

よろしくお願いします && 私の下手な英語でごめんなさい!

4

2 に答える 2