Hogyan írjunk egy chat java! (Problémák)
Itt van az én szerény véleményem a chat:
Hozzon létre külön patakok és hallgat aljzatok - sok felesleges munkát. Egyszerűsítése érdekében ezt a folyamatot, akkor a Java RMI technológia. Serevere kliens és ebben az esetben biztosítja a távoli objektum egymáshoz. Server biztosít egy tárgy regisztráció és bejelentkezés tárgyak üzenetek küldésére. Client - rendelkezik egy tárgy, amelynek módszereit is okozhat a szerveren, például üzeneteket küldeni az ügyfélnek.
Az általános rendszer a következő:
A szerver létrehoz egy közös cél, hogy minden fogyasztó, amely regisztrációs szolgáltatás (login) az ügyfélnek. Minden ügyfél hívja módszerek egy távoli objektum, hogy bekerüljön a chat. Például, az objektum lesz a módszer bejelentkezési (String név, char [] jelszó MyCallbackObject clientCallback) és visszatérő (abban az esetben sikeres bejelentkezés), hogy a tárgy a módszerek sendmessage (String üzenet). Az ügyfél hívja ezt a módszert, ha azt akarja, hogy küldjön egy üzenetet.
A szerver létrehoz egy medence visszajelzést tárgyak az ügyfelekkel. A medence van elhelyezve információt az ügyfélről és az ügyfél MyCallbackObject clientCallback. Ha a szerver kell küldeni egy üzenetet, hogy az ügyfél, akkor választhat egy medence tárgy clientCallback megfelelő ügyfél neki, ami az ő módszere (például) sendmessage (String üzenet). Így az ügyfél megkapja az üzenetet.
Előnye ennek a megközelítésnek az, hogy nincs állandó hallgatás aljzatok ciklust. Pontosabban, ebben a ciklusban nem lesz látható az Egyesült Államok magas szintű RMI mechanizmusokat.
Bocs, ha zavaros le. Célszerű először megismerkedhetnek a RMI, akkor a kép sokkal világosabb. De ez csak az én gondolataim önkéntes.
in.read () olyan, mint arra vár, hogy opupeniya, azaz míg az adatok nem jönnek, hogy van a zár, hogy nem lehet eltávolítani. De ez IMHO, nem probléma, mert Minden csatlakoztatott kliens, akkor egyszerűen létrehozhat egy külön téma, amely csak hallgatni őt. Vagy másképpen lehet?
Számos módja van, read () metódus
- int read () - tényleg zárható
- int olvasni (byte [], int, int) - nem blokkoló
A gondom az, hogy amikor elindította az egyes ügyfél külön téma, hogy olvassa el a szerver, olvasás normalno.No amint futok egy másik szál a szerveren, amely érinti minden második foglalatok ügyfelek és elküldi őket bizonyos információkat, akkor Menet hogy történjen, hogy olvassa el az ügyfél - nem olvasott semmit tőlük.
Anélkül, hogy a kódot, nehéz mondani valamit.
Hozzon létre külön patakok és hallgat aljzatok - sok felesleges munkát. Egyszerűsítése érdekében ezt a folyamatot, akkor a Java RMI technológia.
Ez lehetséges, de van néhány probléma:
1. optimalizálása szerver teljesítményét nehéz lesz (és az RMI mindig elég telhetetlen források technológia)
2. Az ügyfelek csak a Java
és vissza (abban az esetben sikeres bejelentkezés), hogy a tárgy a módszerek sendmessage (String üzenet). Az ügyfél hívja ezt a módszert, ha azt akarja, hogy küldjön egy üzenetet.
Valami, amit nem értettem, hogy vissza fog térni, hogy a tárgy?
Ui A téma azt ajánlom elolvasni: Instant Messaging Java: A Jabber jegyzőkönyvek. Szeretek fekszik valahol elektronikus formában.