Would have been easy to fix, if this wasn't a demo.
Either you use IPNS which are pointers to other data on IPFS. Or you can use DNS to point to IPFS hashes. The results are the same, you end up with a address that can be updated.
For this example I didin't use it, as it's just a silly little example.
Not sure how that would work. You would have to make some transaction on the Ethereum network for other peers to discover you, correct? That kind of makes the barrier to entry a lot harder.
On desktop, it's possible to use mDNS et al, we need something similar for browsers.
Please tell me more how I could use Ethereum for discovery of other peers though, sounds interesting.
If you want to use IPFS, you can either import IPFS as a library (which this application does, everything is P2P in the browser, by using js-ipfs and including it in the application, you can see it in the annotated source here: https://ipfs.io/ipfs/QmbZVv9q52znhF9wN6GVi55EJQYq2BR6oeTgzVn...) or you can connect to a gateway.
The chat messages are being sent directly to the other party.
Why is that? I think this app fits very good with IPFS. Same applies to Orbit.