Нет правильного и неправильного ответа на ваш вопрос - все зависит от того, что вам нужно.Затем вы можете выбрать лучшую архитектуру для ваших нужд, а затем - лучшую технологию для этой архитектуры.
Необходимо учитывать две вещи - как пользователи будут находить людей для чата, а затем, когда они найдут кого-то, -как приложения соединяются друг с другом.
Чтобы пользователи могли находить друг друга, необходимо либо подключиться к центральному серверу, который затем покажет список всех подключенных пользователей, либо пользователям необходимо ввести IP-адрес.адрес человека, с которым они хотят общаться.Обратите внимание, что некоторые брандмауэры блокируют входящие соединения во втором случае, поэтому в некоторых случаях это может оказаться невозможным.
Затем, после того как вы нашли человека, с которым хотите пообщаться, вам нужно решить, будут ли сообщениямаршрутизировать непосредственно другому пользователю или, если вы хотите продолжать проходить через центральный сервер.
Если вы решите пройти через центральный сервер, то ваше приложение будет функционировать как клиент и, следовательно, будет проходитьчерез брандмауэры без проблем.Однако если вы подключаетесь напрямую к другому пользователю, обе копии приложения будут действовать как клиент и сервер (топология P2P), и, следовательно, могут возникнуть проблемы с брандмауэрами.Сказав это, вы можете назначить одно из приложений сервером, а другое - клиентом, и в этом случае только брандмауэр должен беспокоиться о брандмауэре.
Не зная точно, кто выпытаясь достичь этого, трудно порекомендовать, какая архитектура будет работать лучше для вас.