ここでは、グループチャットを実現するために用いられる拡張であるXEP-0045 MUCについて紹介していきます。MUCというのはMulti User Chatの略です。Multi User Conferenceと言われることもあります。
Groupchatのサービスは、XEP-0030 Service Discoveryの仕様に従い、ルートドメインにぶらさがった、サービスの一つとして提供されます。
[ここにService Discoveryの解説が入る]
上記のように、メインのIMサービスを提供しているドメインがxmpp.example.orgだった場合、そこにぶら下がるサービスは、そのサブドメインで提供され、MUCの場合だと、muc.xmpp.example.orgやroom.xmpp.example.orgなどのようにmucやroom、groupchatなどがサブドメインにされることが多いです。
このように、MUCサービスを提供する場合、まずはそのドメインを決定しなければなりません。
グループチャットを行う場合、まずはチャットルームが必要になります。チャットルームも、ユーザーと同様にJIDで表現されます。
上のサービスディスカバリーで利用したMUCサービス用のドメインを利用することになります。ここでは仮に、MUC用のドメインをmuc.xmpp.example.orgとして、話を進めることにします。
次のようにJIDのローカルパートにチャットルームの名前を利用します。
room JIDroom_name@muc.xmpp.example.org
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 JIDにTaroというリソースがついたものになっています。
これは、room1というチャットルームの中で利用したいニックネームになります。
このように、チャットルームに参加しているメンバーのJIDは、次のように表現されます。
room member JIDroom_name@muc.xmpp.example.org/nickname