【デモサーバーの種類】
はじめに
デモ環境で
Usage表示
このうち
以降ではシングルサーバーとマルチサーバーに分けて説明します。
php worker
コマンドを実行すると以下のようなUsageが表示されます。Usage表示
SOCKET-MANAGER Framework 1.0.0 Usage: command [arguments] main app:minecraft-chat-server マインクラフト版チャットサーバー app:tcpmulti-server TCPマルチチャットサーバー app:tcpmulti-minecraft-server TCPマルチマインクラフト版チャットサーバー app:udpmulti-server UDPマルチチャットサーバー app:udpmulti-minecraft-server UDPマルチマインクラフト版チャットサーバー app:chat-server チャットサーバー craft craft:init <初期化クラス名> 初期化クラスの生成 craft:parameter <UNITパラメータクラス名> UNITパラメータクラスの生成 craft:protocol <プロトコルUNIT定義のクラス名> プロトコルUNIT定義のクラスとステータス名Enumの生成 craft:command <コマンドUNIT定義のクラス名> コマンドUNIT定義のクラスとキュー/ステータス名Enumの生成 craft:main <メイン処理のクラス名> メイン処理クラスの生成 craft:setting <設定ファイル名> 設定ファイルの生成 craft:locale <メッセージファイル名> メッセージファイルの生成
このうち
main
の項目がサーバーの一覧になります。サーバーは全部で6種類あります。以降ではシングルサーバーとマルチサーバーに分けて説明します。
シングルサーバー
ここで述べているシングルサーバーというのはプロセス単体で動作するサーバーの事を指しています。
他のサーバーとの連携機能はありません。
以下のコマンドで実行できます。
サーバーの起動形式(10000ポートで起動する場合)
デモの中でWebsocketを使ったサーバーとして一番オーソドックスなチャットサーバーです。
マインクラフトの機能は搭載していませんのでブラウザ間通信でのみ使えます。
以下のコマンドで実行できます。
サーバーの起動形式(10000ポートで起動する場合)
他のサーバーとの連携機能はありません。
マインクラフト版チャットサーバー
Usageのmain
項目にあるapp:minecraft-chat-server
に該当するもので▶フレームワークのご紹介のページでご紹介させて頂いたサーバーです。以下のコマンドで実行できます。
サーバーの起動形式(10000ポートで起動する場合)
> php worker app:minecraft-chat-server 10000
チャットサーバー
Usageのmain
項目にあるapp:chat-server
に該当するサーバーです。デモの中でWebsocketを使ったサーバーとして一番オーソドックスなチャットサーバーです。
マインクラフトの機能は搭載していませんのでブラウザ間通信でのみ使えます。
以下のコマンドで実行できます。
サーバーの起動形式(10000ポートで起動する場合)
> php worker app:chat-server 10000
マルチサーバー
ここで述べているマルチサーバーというのは、親子関係がある複数のサーバー同士でサーバー(プロセス)間通信を通して連携し合っているサーバーの事を指しています。
このデモではWebsocket用で使うポート番号+10の値を親サーバー用のポート番号として使うというルールにしています。
Websocket+マインクラフト機能を搭載したTCPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10010で起動する場合)
下の画面はサーバーを跨いでプライベート送信を行っている様子です。
Websocket機能を搭載したTCPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10010で起動する場合)
マインクラフト機能は搭載していませんのでブラウザ間通信でのみ使えます。
それ以外はTCPマルチマインクラフト版チャットサーバーと同じです。
Websocket+マインクラフト機能を搭載したUDPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10000で起動する場合)
画面の見た目はTCPマルチマインクラフト版チャットサーバーと全く同じですが、サーバー間通信にUDPを使用しています。
Websocket機能を搭載したUDPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10000で起動する場合)
マインクラフト機能は搭載していませんのでブラウザ間通信でのみ使えます。
それ以外はUDPマルチマインクラフト版チャットサーバーと同じです。
このデモではWebsocket用で使うポート番号+10の値を親サーバー用のポート番号として使うというルールにしています。
TCPマルチマインクラフト版チャットサーバー
Usageのmain項目にあるapp:tcpmulti-minecraft-server
に該当するサーバーです。Websocket+マインクラフト機能を搭載したTCPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10010で起動する場合)
> php worker app:tcpmulti-minecraft-server 10000 10010子サーバーの起動形式(Websocketのポート番号=20000、サーバー間通信用のポート番号=10010で起動する場合)
> php worker app:tcpmulti-minecraft-server 20000 10010
下の画面はサーバーを跨いでプライベート送信を行っている様子です。
TCPマルチチャットサーバー
Usageのmain項目にあるapp:tcpmulti-server
に該当するサーバーです。Websocket機能を搭載したTCPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10010で起動する場合)
> php worker app:tcpmulti-server 10000 10010子サーバーの起動形式(Websocketのポート番号=20000、サーバー間通信用のポート番号=10010で起動する場合)
> php worker app:tcpmulti-server 20000 10010
マインクラフト機能は搭載していませんのでブラウザ間通信でのみ使えます。
それ以外はTCPマルチマインクラフト版チャットサーバーと同じです。
UDPマルチマインクラフト版チャットサーバー
Usageのmain項目にあるapp:udpmulti-minecraft-server
に該当するサーバーです。Websocket+マインクラフト機能を搭載したUDPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10000で起動する場合)
> php worker app:udpmulti-minecraft-server 10000 10000子サーバーの起動形式(Websocketのポート番号=20000、サーバー間通信用のポート番号=10000で起動する場合)
> php worker app:udpmulti-minecraft-server 20000 10000
画面の見た目はTCPマルチマインクラフト版チャットサーバーと全く同じですが、サーバー間通信にUDPを使用しています。
UDPマルチチャットサーバー
Usageのmain項目にあるapp:udpmulti-server
に該当するサーバーです。Websocket機能を搭載したUDPによるサーバー間通信機能を有しているサーバーです。
以下は親/子サーバー1台ずつ起動する場合のコマンド実行例です。
親サーバーの起動形式(Websocketのポート番号=10000、サーバー間通信用のポート番号=10000で起動する場合)
> php worker app:udpmulti-server 10000 10000子サーバーの起動形式(Websocketのポート番号=20000、サーバー間通信用のポート番号=10000で起動する場合)
> php worker app:udpmulti-server 20000 10000
マインクラフト機能は搭載していませんのでブラウザ間通信でのみ使えます。
それ以外はUDPマルチマインクラフト版チャットサーバーと同じです。
ログ出力について
デモ版では以下のディレクトリ構成でログファイルが出力されます。
ログ出力先のディレクトリ
ファイルの命名規則は次の通り。
ログ出力先のディレクトリ
/logs /chat-log チャット履歴 /socket-manager-log Websocket/マルチサーバーのログ
ファイルの命名規則は次の通り。
- ■チャット履歴
- <日付文字列("Ymd"形式)>_W<ポート番号>.log
- ■Websocketサーバーのログ
- <日付文字列("Ymd"形式)>_W<ポート番号>.log
- ■マルチサーバーのログ
- <日付文字列("Ymd"形式)>_<P(親サーバー) or C(子サーバー)><ポート番号>.log
おわりに
サーバー名に
それ以外のサーバーに接続しようとしても無反応かエラーになりますのでご注意ください。
マルチサーバーを使って複数のプロセスを起動する時はバッチやシェルを組んでおくと便利です。
あるいはプロセスIDを含める形でサーバーの情報をデータベースに登録して、起動ファイルや停止ファイルをPHPで作っておけば、
ただ複数のプロセスを起ち上げる時はバックグランド実行にしないと連続で起動がかかりません。
PowerShellでもバックグランド実行はできます。バージョン6以上をインストールしておけばLinuxのように
デモのコマンド仕様は▶デモのコマンド仕様ページでご覧ください。
minecraft
という文字が含まれているものがマインクラフトで接続できるサーバーです。それ以外のサーバーに接続しようとしても無反応かエラーになりますのでご注意ください。
マルチサーバーを使って複数のプロセスを起動する時はバッチやシェルを組んでおくと便利です。
あるいはプロセスIDを含める形でサーバーの情報をデータベースに登録して、起動ファイルや停止ファイルをPHPで作っておけば、
exec
関数で全サーバーの起動をかけたり、kill
コマンドで停止させる事も可能なので運用が楽になります。ただ複数のプロセスを起ち上げる時はバックグランド実行にしないと連続で起動がかかりません。
PowerShellでもバックグランド実行はできます。バージョン6以上をインストールしておけばLinuxのように
&(アンパサンド)
を付けて実行する事も可能です。デモのコマンド仕様は▶デモのコマンド仕様ページでご覧ください。