PHP

PHPでWebSocketを利用したリアルタイムチャット

PHPを利用したWebSocketのサーバ側の実装と、JSでリアルタイムチャットの実装を行います。WebSocketを利用する機能を作る前段階として、簡単なWebSocketアプリケーションを作ってみました

実行環境

  • PHP7.2(RC2)
  • Ratchet
  • js
  • jQuery

WebSocketのサーバー側の実装はPHPではなくもてよいのですが、メインのアプリケーションがPHPだとした場合、PHPで作れていると何かと便利なので、まずはPHPで実装してみました

参考にしたサイトはこちら
Webcoket for PHP
『Ratchet』を使ってPHPのwebsocketを試してみた

Ratchetを利用しています。基本的にサイトで紹介されている導入方法でPHP側は簡単に実装できます

これで実行環境はできました。Chatを実行する機能を作ります。
この記事で紹介されているクラスを基にして、細かい修正をしただけです

メインの処理を作ります

作成した「server.php」を実行します

正しく起動したサーバ側は完成です

次に、PHPのwebsocketに接続して、チャットを行う処理をブラウザ側の処理を作ります。

JSで実装されている部分がメインの機能です。実行するとwebcketにつながり、リアルタイムの通信が行われます。URLは「http://localhost:8080/index.html」などになります。複数のブラウザのタブで開くと動きがよくわかります

片方に、入力して投稿すると、他方のブラウザは再読み込みしなくても、自動的に表示されます。自分の投稿は「右側」、他のユーザの投稿は「左側」に表示されます。左側のブラウザに投稿すると、右側のブラウザにも自動的に投稿が反映されます

右側のブラウザに投稿しても、左側のブラウザに自動的に反映されます。リアルタイムですね

サーバ側の処理をPHPで実装した場合、速度、安定性、同時接続数など検討すべきことはありますが、PHPでもやろうと思えばできるということでした