MUC拡張について

ここでは、グループチャットを実現するために用いられる拡張であるXEP-0045 MUCについて紹介していきます。MUCというのはMulti User Chatの略です。Multi User Conferenceと言われることもあります。

Service Discovery

Groupchatのサービスは、XEP-0030 Service Discoveryの仕様に従い、ルートドメインにぶらさがった、サービスの一つとして提供されます。

[ここにService Discoveryの解説が入る]

上記のように、メインのIMサービスを提供しているドメインがxmpp.example.orgだった場合、そこにぶら下がるサービスは、そのサブドメインで提供され、MUCの場合だと、muc.xmpp.example.orgroom.xmpp.example.orgなどのようにmucroomgroupchatなどがサブドメインにされることが多いです。

このように、MUCサービスを提供する場合、まずはそのドメインを決定しなければなりません。

Room JID

グループチャットを行う場合、まずはチャットルームが必要になります。チャットルームも、ユーザーと同様にJIDで表現されます。

上のサービスディスカバリーで利用したMUCサービス用のドメインを利用することになります。ここでは仮に、MUC用のドメインをmuc.xmpp.example.orgとして、話を進めることにします。

次のようにJIDのローカルパートにチャットルームの名前を利用します。

room JID
room_name@muc.xmpp.example.org

Roomへの参加と離脱

taro@xmpp.example.org/foobarというJIDでサービスを利用中のユーザーが、room1という名前のチャットルームに参加したいときは、次のようなpresenceを送信します。

client to server
<presence from="taro@xmpp.example.org" to="room1@muc.xmpp.example.org/Taro"/>

ここで、toに指定されているJIDに注目して下さい。

room1@muc.xmpp.example.org/Taro

上で紹介したRoom JIDTaroというリソースがついたものになっています。

これは、room1というチャットルームの中で利用したいニックネームになります。

このように、チャットルームに参加しているメンバーのJIDは、次のように表現されます。

room member JID
room_name@muc.xmpp.example.org/nickname

Roomでの発言