Theta/docs/specs.md
2019-11-04 12:30:52 +01:00

4.6 KiB

Peer to Peer chat Specifikáció

A projektem célja egy Peer to Peer chat alkalmazás létrehozása. A lényege az, hogy több gép egy hálózatot alkotva kommunikál egymással,azaz nincs egy központi szerver,ami az üzeneteket továbbítja a klienseknek,hanem minden üzenet közvetlenül megy a feladótól a címzettig.

A program futásának leírása

  1. Konfigurációs fájl betöltése
  2. Azonosító létrehozása
  3. „Hallgató” socket létrehozása, a hallgatás elindítása
  4. Csatlakozás a meghatározott peerekhez
  5. Felhasználói felület létrehozása
  6. A program fő ciklusának elindítása

A program kimenete

Minden egyes kiíráskor a program kiírja az aktuális dátumot és időt a következő formátumban:[ÉÉÉÉ.HH.NN ÓÓ:PP:MM]

A program ezekben az esetekben ír ki a képernyőre (és mindezt elmenti a log.txt fájlba):

  1. Inicializáláskor
  2. Amikor egy peer csatlakozik
  3. Amikor egy üzenet érkezik/el lett küldve

Konfigurációs fájl

A konfigurációs fájl arra szolgál, hogy a felhasználó igényei szerint beállíthassa,hogy hogyan működjön a program.Ez a fájl a Config.ini. Itt a különböző értékek soronként kulcs=érték formátumban vannak.

Ha egy sor kettős kereszttel(#) kezdődik,akkor azt a program kommentnek veszi.

Példa:

#Becenév
nickname=Balazs
#A program által használt port
port=6328

A konfigurációs lehetőségek listája a dokumentációban lesznek elérhetőek.

Peer to Peer modell

Ahogy már az előbb említettem, a cél egy olyan hálózat kiépítése amiben minden gép csatlakozik az összes többihez.Ennek érdekében szükséges az hogy minden egyes számítógép rendelkezzen egy „hallgató” (listening) socket-el. Ezt a program az indításkor hozza létre.

1. Ábra

Megjegyzés: a program alapértelmezett portja a 6327

Csatlakozás más számítógépekhez

Ahhoz hogy egy gép csatlakozhasson egy másikhoz először ismernie kell az IP címét (IPv4) és a portot,amin a program fut. Ezt a peers.txt nevű fájlban kell meghatározni,a program ezt az indításkor beolvassa soronként, ipcím:port formátumban.

Miután csatlakoztak a gépek „kezet fognak”,azaz mindkét gép küld magáról egy leírást.A leírás első karakterének kukac karakternek( @)kell lennie és tartalmaznia kell egy azonosítót (id) és a portot amin a program fut(port).Esetlegesen tartalmazhat egy becenevet(nickname) is. A különböző paraméterek AND jellel(&), a kulcsok és az értékek egyenlőségjellel(=) vannak elválasztva

Példa:

@id=fb55c636c8b513aacab8a46e48109bd2&port=6327&pubkey=LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FESFYvdW5RUThuR3pVZUI2WGZUaGxPT3NSTgo3S1ZobDJkWGxaK1pFN2t6RTdDNFQyZjNPRFRsNnpqQVNWK1MwR293aHd5Q2g5cUpNYm1ibERORW12eGRCL08rCkFPYzZFYVhGYmhSUEFjajB1c1hZMlF1a1lCMVlwL1IrdWhhRThWTWlYZXFDRGpoek8zT3RKRnpmQnk5ZTNPSk4KdDdGRzh4bU43a0VvekxWWTd3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQpc&nickname=ToldiBalazs

A kézfogást mindig az éppen csatlakozó gép kezdi. A fogadó válaszul ugyanilyen formátumban küldi a válaszát,de tartalmazhatja annak peerjeinek listáját(peers). Ezek ipcím:port formátumban vannak vesszővel(,) elválasztva. Ha csatlakozó gép ilyet kap válaszul, akkor ezekre megpróbál csatlakozni.

Ha mindez megtörténik akkor mindketten felveszik egymást a peerek listájára.

Megjegyzés: Ha bármelyik fél valamilyen problémát észlel a kézfogás során akkor küldhet hibaüzenetet is.

Példa: Ha az egyik fél olyan azonosítót(id) küld, ami már létezik a listában,akkor egy ilyen üzenetet küld:

@valid=false&error=ID_TAKEN

Felhasználói felület

A felhasználó böngészőn keresztül érhető el, a HTTP protokollon alapul. Ehhez szükséges létrehozni egy második hallgató socket-et.

Megjegyzés: a felhasználói felület alapértelmezett portja a 5081

Felhasználói felület főoldala

A felület főoldalán a jelenleg csatlakozott peerek, valamint korábbi beszélgető partnerek listáját találjuk.Ha egyik sincs,akkor ezt a program külön üzenettel jelzi.

A felhasználó bármely peer nevére rákattintva elérheti az adott peerel kapcsolatos üzenet oldalát.

Ha bármi változás történik ezekkel az adatokkal kapcsolatban,akkor az oldal automatikusan frissül.

Üzenet oldal

Itt a felhasználó elolvashatja a korábbi üzeneteit,valamint ha a peer elérhető akkor üzenet is innen küldhető (Valójában nem a böngésző küldi el az üzenetet.Az csak továbbítja a programnak, ami elküldi a címzettnek).