Jitsi handles this very well.

I personally would advocate the combination of Zulip for text chat plus Jitsi for calls and screen sharing.

Jitsi has audio rooms like discord?

Jitsi supports audio, video, or both, in addition to screen sharing.

One use case Jitsi doesn't support that Discord does is "push to talk"; that's something I haven't seen a good alternative for, other than Mumble, which seems much less usable for other purposes. But for other purposes, Jitsi works very well; I've had thousands of hours of calls on it at this point.

In an ideal world, I'd love to see a web standard for a web app to request access to a single (user-determined) key, to allow web apps to do push-to-talk while staying in their sandbox.