Programiranje Chat sistema podobnega FB

Pozdravljeni mojstri!

Trenutno pišem CHAT sistem za eno stranko ampak sem naletel na en velik problem ki ga rešujem že cel tedn. Zadeva je napisana v PHP + MYSQL + Javascript (ajax pretežno) deluje podobno kod FB Chat z različnimi zavihki. Zadevo imam zasnovano z eno tabelo ki ima nasledne vrstice: "ID, Sender, Reciever, Message, Date". Torej na poslano sporočilo se shrani v vrsto "Sender" id uporabnika ki pošlje sporočilo, v vrstico "Reciever" id uporabnika ki prejema sporočilo. Zdaj seveda na tak način ne morem prikazat zadnjih sporočil in pa shranit trenuten status samega zavihka. Zato sem takoj pomislil da bi ustvaril še eno tabelo z "ID, Sender, Reciever, Status, Date, Lastupdate" potem pa na sporočilih samo uporabil "TAB ID, Date, Message" in pri izpisu bi uporabil le te podatke.

Ampak na tak način pa spet pridem do naslednjega problema da bi se "status" pa "lastupdate" delila z obema uporabnikoma!

Vem da sem spregledal nekaj očitnega ampak se nikakor ne morem spomniti česa, upam da je bilo vprašanje razumljivo.
Prosim za pomoč, Hvala!

13 odgovorov

V kolikor nimaš dovolj znanja, razmisli o nakupu http://codecanyon.net/search?utf8=%E2%9C%93&term=chat. Če ne drugega boš videl, kako so zadeve narejene.

Jaz bi naredil naslednje:

  1. Dodal bi tabelo "room" z naslednjimi podatki: id, participants (id-ji udeležencev)
  2. V tabelo "chat" bi dodal "room_id"
  3. Ko nekdo "chatne" nekoga drugega, bi pogleda če obstaja "room" kje sta senderid IN receiverid v "room.participants" in "odprl" ali novega ali obstoječega.
  4. Znotraj "room-a" lahko potem sporočila sortiraš po "chat.lastupdate" tako da imaš zgodovino sporočil

Osnovno tabelo lahko potem poenostaviš, ker ne rabiš več receiver stolpca. Lahko tudi razširiš funkcionalnost v "multi user chat"...

Upam da pomaga...

Hvala vsem za pomoč!
Moj problem sem hitro rešil z idejo od Cyber.

Vse JS rešitve so problem že zato ker stranka nima gostovanja za Socket.IO strežnik, drugo kod drugo pa je treba chat shranjevat v bazo podatkov kar zakomplicira stvari iz mojega vidika. Chat kod je sedaj potrebuje 3ms da se zgenerira na i5 mašini tako da mislim da je popolnoma dovol za nekaj sto uporabnikov. Če bo pa kasneje kakšen problem z strežnikom in hitrostjo bo pa stranka najela programerja ki se spozna na te zadeve.

Sem pa pogledal malo v Node.js in podobne rešitve in se mi niso zdele tako enostavne kod eni tukaj pravijo. Sploh pa ne v primeru da potrebuješ podatke v bazi podatkov kod je zahtevala stranka. Pa authorizacije mi tudi niso ble jasne. Sej ni važno.

Skratka hvala za pomoč!