2017-10-24 2 views
2

한 클라이언트에서 다른 클라이언트로 메시지를 가져올 수있는 방법이 있는지, 수신중인 클라이언트가 서버에 연결되어 있지 않지만 잠시 후 연결되는지 알고 싶습니다. 해당 클라이언트는 해당 메시지를 수신해야합니다.클라이언트가 서버에 다시 연결 한 후 서버에서 클라이언트로 보내는 Java 메시지

한다고 가정 클라이언트 A와 클라이언트 B :

  1. 클라이언트 A는 클라이언트 B에 메시지를 보내지 만, 클라이언트 B가 오프라인 메시지가 내가 원하는 것을 (일종의 서버에 저장해야합니다
  2. 클라이언트 알아두기)
  3. 클라이언트 B가 서버에 연결할 때 클라이언트가 오프라인 일 때이 클라이언트로 보낸 모든 메시지를 수신해야합니다.

모든 것이 소켓을 사용하여 Java로 수행되어야합니다.

오프라인 메시지를 저장 한 다음 서버에 연결하는 즉시 클라이언트에 보낼 수있는 메커니즘이 있습니까?

+0

이것은 JMS 작업과 같습니다. – Flown

+0

하지만 Java 소켓 프로그래밍에서 JMS를 사용하는 방법 – ZeroCool

답변

0

데이터베이스, 메모리, 일부 클라우드 저장소, 일반 텍스트 파일 등 다양한 유형의 저장소를 사용할 수 있습니다. 예를 들어, 모든 메시지를 메모리에 저장하면 (단순화하기 위해) 각 메시지와 발신자와 수신자에 대한 ID가 증가합니다 (다른 방법으로도 가능하지만 제안 만하고 있습니다).

새 클라이언트가 서버에 연결하여 인증을 받으면 (클라이언트 B가 채팅에 참여하는 경우 이전과 동일한 클라이언트 B 임) 클라이언트는받은 마지막 메시지 ID를 서버에 "알릴"수 있습니다. 그런 다음 서버는 누락 된 메시지를 클라이언트에 전달할 수 있습니다. 물론 그것은 모델에 많이 달려 있으며 정확히 무엇을 달성하기를 원하십니까? 아마도 메시지를위한 메모리 저장 공간은 사용자의 필요에 따라 데이터베이스 나 다른 것을 사용할 수있는 최선의 방법은 아닙니다.

관련 문제