@s04v1_1h
sysadmin

Как реализовать коммуникация между клиентами Java?

Привет, я пишу чат на Java. Появилась проблема в реализации отправки/принятия сообщений клиентами.
Если 2 клиента: client1 и client2.
1) client1 отправляет на сервер сообщение для client2.
2) Сервер принимает сообщение и сохраняет в базу данных
3) Сервер должен отправить сообщение к client2 и в GUI клиента нужно вывести сообщение.
То есть сервер должен отправить сообщение в определенный поток.
Как это реализовать ?

ps. На сервере у меня 1 поток = 1 клиент.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
Я мастер на все руки, я козлик Элек Мэк :-)
- очень плохая тактика: 1 поток - 1 клиент! Используйте пулы коннектов, ну или библиотеки типа netty.
- обмен можно делать и по http/https, для этого достаточно использовать какой нибудь сервер типа tomcat или jetty или undertow....
- можно использовать библиотеки для постоения серверов и сервисов типа spring boot, javalin и иже с ними
- можно использовать например grpс
- можно обмениваться json или protobuf или avro поверх любого протокола
- можно использовать шины сообщений: actvemq, kafka, pulsar, redis....
- можно плюнуть на все и взять новомодный mosquitto и mqtt
- можно работать через websockets

Я бы начал с простого http + json или grpc, или mqtt... В тяжелых случаях kafka или pulsar
Не стал бы брать websockets, намучаетесь с клиентской частью!!!

Мои фавориты
- http + json - https://javalin.io/ + https://github.com/google/gson
- https://grpc.io/
- https://pulsar.apache.org/
Ответ написан
Bavashi
@Bavashi
3) Сервер должен отправить сообщение к client2 и в GUI клиента нужно вывести сообщение.
То есть сервер должен отправить сообщение в определенный поток.
Как это реализовать ?

Через метод getOutputStream() класса Socket.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы