0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【マインクラフト(統合版)】Websocketサーバーを使ってサーバー間通信チャットを作ってみました

Posted at

はじめに

以下のページではサーバーの単一プロセスによるチャットをご紹介しましたが、ここでは複合プロセスによるプライベートメッセージでのやり取りをご紹介します。

簡単に言えば、サーバープロセス単位で部屋割りをするチャット方式です。
ここでは以下の部屋割りと登場人物でメッセージのやり取りを行います。

部屋番号:10000(ポート番号10000のサーバープロセス)
村人A(ブラウザ)
マイクラー(マインクラフト)
部屋番号:20000(ポート番号20000のサーバープロセス)
村人B(ブラウザ)

動作環境

プラットフォーム
Windows10
マインクラフト(統合版)
Bedrock Edition v1.21.82
socket-manager
v1.14.7
言語
PHP v8.2.4(v8.1.0以降)

チャット動作

通常のチャット(ブラウザ⇔マインクラフト)

以下の画面は、同じチャット部屋で村人A(ブラウザ)とマインクラフト間でメッセージ送信を行っている様子です。

同じ部屋(サーバープロセス)内でのチャットの様子(ブラウザ⇔マインクラフト)

メッセージ送信の順序
1)「村人A」からのメッセージ「もうかりまっか」を送信
2)「マイクラー」からのメッセージ「ぼちぼちでんな」を送信

サーバー間チャット(ブラウザ⇔ブラウザ)

以下の画面は、異なるチャット部屋で村人A(ブラウザ)と村人B(ブラウザ)間でプライベートメッセージ送信を行っている様子です。

異なる部屋(サーバープロセス)間でのプライベートチャットの様子(ブラウザ⇔ブラウザ)

メッセージ送信の順序
1)「村人A」からのメッセージ「邪魔するでー」を送信
2)「村人B」からのメッセージ「邪魔するんやったら帰ってー」を送信

サーバー間チャット(ブラウザ⇔マインクラフト)

以下の画面は、異なるチャット部屋で村人B(ブラウザ)とマインクラフト間でプライベートメッセージ送信を行っている様子です。

異なる部屋(サーバープロセス)間でのプライベートチャットの様子(ブラウザ⇔マインクラフト)

メッセージ送信の順序
1)「村人B」からのメッセージ「トイレかしてー」を送信(マインクラフト側ではウィスパーとして表示)
2)「マイクラー」からのメッセージ「かりるんやったら返してー」を送信(<メッセージ>#<ユーザー名>形式で送信)

サーバーの起動方法

TCP通信によるサーバー間通信(IPC)の場合

サーバー間通信用の親サーバーのポート番号は10010とします。
WebsocketサーバーはTCP通信のため、ポート番号をサーバー間通信用のものと被らないようにする必要があります。

親サーバーの起動コマンド
> php worker app:tcpmulti-minecraft-server 10000 10010

第一パラメータ:10000(クライアント通信ポート)
第二パラメータ:10010(サーバー間通信ポート)

子サーバーの起動コマンド
> php worker app:tcpmulti-minecraft-server 20000 10010

第一パラメータ:20000(クライアント通信ポート)
第二パラメータ:10010(サーバー間通信ポート)

UDP通信によるサーバー間通信(IPC)の場合

サーバー間通信用の親サーバーのポート番号は10000とします。
TCP通信とUDP通信とではソケットリソースが異なるため、サーバー間通信用のものと同じポート番号が利用できます。

親サーバーの起動コマンド
> php worker app:udpmulti-minecraft-server 10000 10000

第一パラメータ:10000(クライアント通信ポート)
第二パラメータ:10000(サーバー間通信ポート)

子サーバーの起動コマンド
> php worker app:udpmulti-minecraft-server 20000 10000

第一パラメータ:20000(クライアント通信ポート)
第二パラメータ:10000(サーバー間通信ポート)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?