J'ai un serveur où mon java application web et base de données serveur résident.Java - Comment envoyer une notification du serveur au client
Maintenant, les clients de mon application web sont de deux types:
- ClientType1
- ClientType2
Les deux peuvent accéder à la base de données.
ClientType1 stocke les données dans la base de données.
ClientType2 récupère les données de la base de données.
Mais le ClientType1 devrait commencer stocker les données dans la base de données lorsque le ClientType2 dit Démarrer.
Similairement ClientType1 doit cesser de stocker les données dans la base de données lorsque le ClientType2 dit Arrêtez
================== ============================================= =
Q1. Quelles sont les solutions à ce problème?
Voici les approches que je pensais de:
Créer une table dans la base de données ayant une colonne qui indique l'état Démarrer ou Arrêter et doit être réglé par ClientType2 la valeur de cette colonne. ClientType1 continuera à envoyer la requête à la base de données pour obtenir l'état de cette table et effectuer des opérations en fonction de l'état.
Appliquer ServerPush approche par laquelle le serveur gardera une connexion avec le ClientType1 vivant et envoie la demande à lui chaque fois qu'il reçoit la commande (Démarrer ou Arrêter) de la ClientType2 . Le problème avec cette approche est que le non. des prises ouvertes au serveur augmentera à mesure que l'augmentation du nombrede ClientType1
Pourriez-vous expliquer ce que vous entendez par "le client s'enregistre lui-même auprès du serveur". –
@Yatendra, c'est le * client * initie le contact au * serveur * qui peut garder une file d'attente de tous les * clients *. Cette file d'attente peut être utilisée pour arbitrer l'accès à la base de données entre les clients. Par exemple, le serveur peut envoyer les commandes 'start' et' stop' aux clients de la file d'attente. En bref, vous pouvez appliquer le concept 'Listener' sur le réseau. –