Interconnecting multiple MUC Rooms

Hello there,

We use Openfire as a backend server to drive multiple chat channels in our app. Sometimes, we have special events where two or more of these channels should be “interconnected”, so that every client in any of the interconnected channels can see messages from all of the interconnected channels without having to explicitly join all of them. The goal is to form a unified channel automatically without requiring the users to do anything. When the event is over, we’d separate the channels again and every user would remain in the MUC channel s/he was in initially.

Is there anything in Openfire that could help us achieve this goal? Any ideas?

Best regards,
Mike

Hi Mike,

Openfire 4.6.0 brings experimental support for Federated MUC, which seems to cover your use-case. I’d have a look at that.

Regards,

Guus

Hi @guus ,

Thanks a lot for the quick reply! I read through XEP-0289. Indeed, it seems like a perfect match. A couple of questions come to mind though, if you allow:

  1. The main use-case described in XEP-0289 describes MUC federation between different servers. Federation between MUCs on a single server is not mentioned. Does the Openfire implementation allow for it?
  2. In the use-cases described in XEP-0289, both FMUC nodes seem to be already configured beforehand to take part in the FMUC set. What about my use case where different FMUC nodes with users and running discussions join and leave the set arbitrarily “at any time”. Is that taken into account by the Openfire implementation?
  3. (if 2. is a ‘yes’) Is there a way to form and dissolve FMUC sets via Openfire’s REST API? If so, is there a piece of documentation you could point me to to get me started?

Thanks again for the great work, we really appreciate it!

  • Mike

You’re right that XEP-0289 describes a server-to-server use-case. I don’t think, however, that there’s anything in the implementation that stops anyone from using it to federate two local rooms. The implementation works with addresses, and will route between those. From what I can tell without further testing, the fact that rooms are on different XMPP domains is inconsequential.

To set expectations: FMUC support has been added to release 4.6.0 of Openfire as an experimental feature, and in that release, it is exactly that: something to experiment with, but not something I’d advise to use for anything important, before (a lot) more work / verification has been done. That relates particularly to your second question. I believe that setting-up and tearing down federation between chatrooms ‘in-flight’ (as opposed to beforehand) should work, but the ‘experimental’ disclaimer very much applies.

There is no explicit support for FMUC in the REST API yet. I’m not sure if the standard room configuration options allow you to configure things through the REST API (maybe, if you’re lucky). If not, that needs to be build.

Okay, thanks a lot for the details, guus! When I’ll be working on that particular feature on our side, I’ll check and see if / how well FMUC works for us. (It’s not going to be very soon though, it’s somewhere on our roadmap further down the road ;-))

Sure. I’d be happy to get your feedback. We’re also likely to work on it in the near future, so by the time you get to this, it might be worthwhile to look at the latest state of the code.