Any helper servers or relays (STUN and TURN servers) are used solely to assist call initiation (STUN), or in relaying call data (TURN).
You need to transfer candidates yourself. ICE subsystem helps with determining candidates, but not with transfer. After all, that’s the point of separating the signaling layer; you will not be transferring candidates over XMPP the same way you’ll do it using SIP. Other systems (many WebRTC demos come to mind!) may implement their own signaling that does not seem similar to any standard apart from using SDP format (and even that purely because that’s easiest to pull out of the browser).
Hence, you are almost certainly transferring candidates using some sort of a signaling server; in your case, I suspect that’s the HTTP server. This is what apprtc demo does; it transfers SDP stanzas over HTTP, where the HTTP server acts as the sole signaling intermediary.