What's the data flow below web, prosody and jicofo?

I want to understand the data (work) flow between web, prosody and jicofo.

when create a room from web, the web will send out a http-bind request to prosody. then how does the prosody connect with jicofo ? via prosody component ?

I did a experiment today. I hard coded the roomname send by http-bind in conntions.js
connectionConfig.bosh += ?room=${<my room>};
but I still input a room name via UI.
in jicofo log, it still display the name I input on the UI which I expect to see the hard coded room name.

You can take a look at this diagram showing the connections that are used: https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md#network-description

So jicofo has 2 connections, component and client one. So all components communicate via xmpp server (prosody), the web client transport xmpp over bosh.
When the web client connect sends an iq message to the component address of jicofo, jicofo creates the room joins and returns a result to the client saying: ‘it is ok now to join’.
The parameter in the bosh connection is used for load balancing, if you have multiple shards (multiple xmpp servers + jicofo) a room/conference should land on the same shard. The load balancers keep mapping room -> shard and know where to forward the bosh connections based on the room name. If you are using one shard changing that parameter does not do anything.

thanks for explain.
so the flow is like:
after clicking the go button on web client, a bosh request send to prosody.
prosody redirect the request to jicofo.
the jicofo send request to prosody to create the Room, add participant and allocate jvb channel.

look right ?

After jicofo receives a confirmation that room creation is finished, then jicofo responds back to the client and the client then tries to join the room. Jvb channel allocations happen after the second participant joins.

the room creation is done by the prosody ? the jicofo send api request to prosody ?