Zadejte hledaný výraz...

Chat v aplikaci

Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
15. 10. 2012 13:02:46
Zdravím,
chtěl bych do budoucna v C# napsat aplikaci, která by umožnovala chatování mezi klienty, přidávání do přátel, statu (on/off) a vše co k tomu patří.
Můj dotaz - nechci bezhlavě kopírovat kód, ale chci pochopit princip jak v aplikaci tohle řešit. Napadl mě aplikace zvlášť na nějakém stroji vyhrazený tomuto účelu, který bude tyto údaje NĚJAK zpracovávat a klient s tím serverem bude nějak komunikovat, nějak jak fungují třeba herní servery, tzn. server na stroji a klienti se připojují, jen nemám vůbec ponětí jak to provést a jak komunikovat.
Díky moc za rady!
15. 10. 2012 13:02:46
https://webtrh.cz/diskuse/chat-v-aplikaci#reply819869
Boris Šuška
verified
rating uzivatele
15. 10. 2012 21:25:11
Zaujímavý chellange. Záleží na tom ako sa to rozhodneš implementovať. Keď by to bolo čiste v C# a jednalo by sa o standalone aplikáciu, tak môžeš implementovať 2 spôsoby komunikácie a to:
- P2P (klient s klientom) ako napr. Skype alebo
- cez spoločný server ako napr. ICQ
P2P
Asi najjednoduchší spôsob implementácie je nasledovný:
- chcú spolu komunikovať Alica (A) a Bob (B), ale A a B o sebe neveida, nevedia kde kto je, akú majú IP adresu
- v infraštruktúre je zabudovaný server (S), ktorého poloha (IP alebo doménové meno) sa nemení a A aj B ho poznajú.
- Keď sa A dostane do stavu on-line kontaktuje S a povie mu, kde je
- Pri náčítaní kontakt listu u klienta A sa A pýta S, či je B online a S odpovie, že nie
- A sa v určitých intervaloch (1 min.) pýta S, kto je online
- Keď sa B dostane do stavu on-line kontaktuje S a povie mu, kde je
- Pri náčítaní kontakt listu u klienta B sa B pýta S, či je A online a S mu aj pošle informácie, kde je (jeho IP)
- B sa v určitých intervaloch (1 min.) pýta S, kto je online
- Potom B vidí A online a môže ju kontaktovať
- A sa dozvie o tom, že B je online len pri opakovanom dotaze na S, čiže najviac. 1 min. po tom, ako sa B prihlásil
- Teraz už obaja, A aj B o sebe vedia a môžu spolu komunikovať, S o ich komunikácií vôbec nevie
- Keď sa jeden z nich odhlasuje kontaktuje S a aj toho druhého s tým, že ide do stavu offline
U tohoto jednoduchého modelu je potreba sa vysporiadať s mnohými vecami, ako napr.:
- Ako A alebo B zistí svoju presnú adresu, pretože keď by sa na ich IP adresu pýtal Server, tak by dostal pre klientov v rovnakej lokalite rovnakú IP adresu
- Ako sa vysporiadať s neočakávaným odpojením klienta (neklikne na logout)
- Ako optimalizovať protokol, aby nebol príliš náročný
Nedá sa použiť napr. pre JavaSkriptové aplikácie a Java Applety, ale obecne pre aplikácie, ktoré nemôžu komunikovať s kýmkoľvek. Teoreticky by sa dal server nahradiť použitím broadcastu (vysielanie informácie všetkým, nie len jednému), ale teória zlyháva na tom, že klienti by museli byť na jednej sieti (napr. rovnaká Wi-fi), čo je prakticky nepoužiteľné.
Spoločný server
Princíp by bol podobný s tým rozdieľom, že keby A chcela zaslať správu B, musela by tú spravu zaslať S a S ju pošle B - čiže všetky správy idú cez S. Potom S môže ponúkať doplnkové služby ako napr. doručovanie offline správ. V prípade P2P sa správy posielajú priamo medzi A a B a len keď sú obja online. Toto riešenie môže byť implementované JavaScript-ovými aplikáciamia, pretože S by bol vlastne aplikačný aplikačný server a JavaScript-ová aplikácia by bola klient.
15. 10. 2012 21:25:11
https://webtrh.cz/diskuse/chat-v-aplikaci#reply819868
Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
16. 10. 2012 16:27:58
boris.suska díky moc za objasnění, ono lépe zní asi ten společný server. Ono zatížení toho serveru může být maximální, výkonem nijak omezen nejsem, problém bude ta výkonnost u klienta, to bude chtít nejspíše trochu více promyslet. Každopádně díky za odpověď, uložím si jí a budu malými krůčky zkoušet různé scripty, snad se dopracuji k výsledku :)
16. 10. 2012 16:27:58
https://webtrh.cz/diskuse/chat-v-aplikaci#reply819867
Boris Šuška
verified
rating uzivatele
17. 10. 2012 02:40:11
Držím palce, keď budeš ešte potrebovať poradiť s implementáciou, znova napíš. Sp C# ti síce moc neporadím, ale s technickým riešením kludne.
17. 10. 2012 02:40:11
https://webtrh.cz/diskuse/chat-v-aplikaci#reply819866
eduard.babka
verified
rating uzivatele
17. 10. 2012 09:04:12
A pokud s budeš potřebovat poradit s C#, tak taky napiš.. V tvém případě bude lepší mít aplikaci na serveru a klidntům, když se odpojí necháš možnost přijímání zpráv, či třeba možnost přepsílání na mail.
17. 10. 2012 09:04:12
https://webtrh.cz/diskuse/chat-v-aplikaci#reply819865
Pro odpověď se přihlašte.
Přihlásit