2016-06-14 7 views
0

クライアントでプッシュ通知を送信できるアプリケーションを作成する必要があります。しかし、クライアントが切断されることもあるので、通知を保存して、再接続するときに通知をクライアントに送信したいと考えています。メッセージが受信されていることを確認する

これを達成する方法はありますか? 送信する前にクライアントが存在するかどうかを知る方法、または通知がうまく受信されたかどうかを知る方法が必要です。 私の通知はクライアント固有です。

は、私は多くのコードを誇示することはできませんが、私はこのようなものを使用したいと思います:

@Autowired 
private SimpMessagingTemplate messagingTemplate; 

public void sendPush(Long clientId) { 

    messagingTemplate.convertAndSendToUser(clientId, "/queue/reply", myMessage); 
    // -> how do I know if message is received ? 
} 

は、私は、ばねのWebSocketとストンプ・エンドポイントを使用します。

ありがとうございました!

+1

お客様のクライアントには、システム上で実行されるクライアントプログラムがありますか?あなたはそのコードを管理していますか?そうであれば、クライアントが接続したときにサーバーからメッセージを引き出す(または要求する)コードを実装することになります。これはすでに存在しているはずです。サーバーはメッセージがプッシュされたことを認識します。 –

+0

クライアントがプッシュメッセージを受信したことがわからない場合、メッセージをクライアントに送信する必要があるかどうかをサーバーがどのように知ることができますか? –

+1

クライアントはサーバーに「ねえ、私はここにいる!」と伝えます。それが接続するとき。サーバーは「OK」と言って、ここでこれらのメッセージを受け取ります!クライアントが「ok私は彼らを持っています;ありがとう!サーバは、クライアントがメッセージを受信したことをクライアントが通知するのを待っています。それまでは、サーバはクライアントがメッセージを受信したかどうかを知りません。私があなたに手紙を送って、あなたが手紙を送っていないなら、私が送った手紙を手に入れたことをどうやって知っていますか?その問題は、私が理解しているように、TCPがUDPで解決するのと同じ問題です。 –

答えて

0

「ack」メッセージが表示されることがあります。 すべてのメッセージをデータ構造に保存し、ackを取得したときにのみメッセージを削除することができます。

+0

確かに解決策ですが、私はサーバ側でロジックを維持し、クライアント側で最小限に抑えることを推奨します。 –

関連する問題