Традиционно, большинство приложений использовали решение, подобное TURN (то есть, связь через сервер), чтобы преодолеть проблемы обхода NAT. Поскольку чат не требует большой полосы пропускания, серверы могут поддерживать тысячи сообщений.
Но теперь, когда P2P развился и проблемы обхода NAT теперь хорошо поняты, некоторые используют прямую связь UDP, при условии, что NAT пользователей позволяет это (то есть, STUN-подобная связь). Им все еще нужен центральный сервер, чтобы пробить дыру, хотя. Прямая связь также полезна, когда необходимо передать много данных.
Я считаю, что будет справедливо сказать, что большинство современных фреймворков используют комбинацию обоих.