Jump to content
php.lv forumi

Čats


Kemito

Recommended Posts

Sveiki gudrie kungi, tīri bieži vien paklausu jūsu padomus, kā iepriekš veidoju komentāru sistēmu, kur ļoti labi man izpalīdzējāt ar funkcijām - manuāļus palasīju par tiem un paskaidrojāt viss super, vēlreiz pasaku Paldies!

Šoreiz esmu ķēries pie kautkā nopietnāka, jeb mūsu tautā saucamā ČATA !

Vēlējos dzirdēt jūsu domas. Tā tad sākumā par veidu, kā to grasos taisīt.

 

Iespējas:

# Čata istabas

# Čata istabu pievienošana

# Iespējama Čata istaba ar paroli

# Paša čatošana

# Privātā čatošana

 

Protams tas ir tā teikt aptuveni idejas līmenī!

Vēlējos no jums uzzināt, dzirdēt, lietas ko vaidzētu IEVĒROT, ko OBLIGĀTI pievienot! Tā teikt, kādus datu aizsardzības nolūkus ievērot. Kā labāk, jeb precīzāk izveidot šo, kādas kārtības un ko ievērot. Ko nevaidzētu darīt, ko OBLIGĀTI vaidzētu, kādas sistēmas pievienot / izveidot! Visu visu kas saistās aptuveni ar šīm lietām, kautvai vismaz daudzmaz normāli būtu iespējams izveidot man šo čatu.

 

Čats man būs jau ar reģistrācijas profilu, teiksim tā lietotājs man jau ir reģistrējies, tas ienāk iekšā, izvēlas istabu un čato.

Ceru, ka sapratāt, ko lūdzu no jums ! ja nē droši pārprasiet, visu paskaidrošu, man tik vaig zināt INFO. Taisīt neko nevaig, jo kā zināms - Pašam ir patīkamāk un labāk to darīt :D

Paldies jau censoņiem iepriekš!

 

P.S. Lūdzams neminēt tādas lietas, kā "valīds" xHTML :D Vismaz šito es zinu, par to jāpasakas paldies rATRIJ`am un vēl dažiem gudriem vīriem :D

Link to comment
Share on other sites

Socketiem mīnusi:

- Nāksies būvēt tcp serveri, php čakarīgi, python-ā būs daudz vieglāk (dažās rindiņās var uzbūvēt funkcionējošu multithread tcp serveri).

- WebSocketus suporto mazākums browseru (pēc lietotāju daudzuma), tāpēc nāksies izmantot flash-u.

 

Socketu plusi:

- Pareizais veids kā būtu jātaisa čats

- Augsta performance, jo nav jāizmanto nekādas db un atkārtoti http pieprasījumi. Visu pēdējo saraksti var glabāt tcp servera operatīvajā atmiņā. Un, ja gadījumā vajadzīgs čata logs, tad vienkārši logot failos.

Link to comment
Share on other sites

sockets, teiksim tā, ir konekcija starp serveri un klientu.

Gan Websockets, gan HTTP ir protokoli, kuri balstās uz TCP socketiem, tikai atšķirībā ir šāda:

 

HTTP klients piekonektējas HTTP serverim, izveido konekciju.

HTTP klients: iedo man index.php

HTTP serveris: še tev index.php <html><body>Hello</body></html>

HTTP serveris atkonektē konekciju.

 

 

Websocket klients izveido konekciju.

Websocket klients: čāv

Websocket serveris: čāv

Websocket klients: iedo man useru listi čatam

Websocket serveris: jānis, ilze, juris

Websocket serveris (pēc kāda laiciņa): jānis saka: čau visiem

Websocket serveris (pēc kāda laiciņa): ilze saka: čau jāni

Websocket klients: saku visiem: čau jāni

Websocket klients pārtrauc konekciju.

 

Ja domu saprati, tad HTTP gadījumā klients paprasa datus, saņem tos un konekcija beidzās, kameŗ websocket-u gadījumā pēc handshake-a kā klients, tā serveris var viens otram sūtīt datus.

Edited by codez
Link to comment
Share on other sites

Nav gluži akurāti. HTTP konekcijas var nevērt ciet pēc datu pieprasījum un saņemšanas, bet var arī turēt atvērtu arī vēlāk.

 

HTTP atšķirība no soketa ir tāda, ka HTTP ir protokols. Tajā ir noteikts ko sūtīt, kā sūtīt (vispirms headeri, tad tukša rinda, tad dati, utt..). Tb ir standarts, kurš ir jāievēro gan klientam (browserim), gan serverim (piem Apache), lai abi varētu veiksmīgi sazināties.

Turpretīt sokets ir kā pliks binārs fails - tu vari caur soketu nosūtīt patvaļīgus baitus, cik vien gribi un kādus gribi. Tik vien otrā galā ir jābūt atbilstošam serverim (vai klientam attiecīgi), kas sapratīs tavus nosūtītos datus. HTTP izmanto soketu apakšā, lai sūtītu savus datus (headerus, lapas contentu, bildes utt). Tāpat kā plikā failā uz diska - tu vari tur ierakstīt jebko, vari arī nolasīt jebko, tik tev pašam jāzin ko un kā tu raksti.

Link to comment
Share on other sites

Bet principiāli jau mans piemērs par http ir pareizs, jo šī daļa

 

HTTP serveris: še tev index.php <html><body>Hello</body></html>

HTTP serveris atkonektē konekciju.

 

apraksta arī long-pool requestu, respektīvi nav jau norādīts, ka serveris uzreiz atsūta to index.php failu, taču viens paliek nemainīgs - ja konekciju patur ilgāk atvērtu, datus varēs sūtīt tikai http serveris.

 

 

HTTP un WebSocket ir protokoli, kuri būvēti uz TCP/IP protokola. Kā jau bubu norādīja, tad sockets ir ta kā pliks binārs kanāls, kurā tu vari sūtīt datus un kurš darbojās uz zemāka līmeņa TCP/IP protokola.

Šeit es gribētu tikai piebilst, lai nejauc Websocket-u ar socket-u, kas nav viens un tas pats. Websocket ir protokols, kuram sākumā ir handshake-s un tālāk jau datus var sūtīt abos virzienos tāpat kā plikā socket-ā.

Link to comment
Share on other sites

Tagad man ar aizgāja mazliet par tiem Socket`iem !

BET KUR IR BRIEDIS AR rATRIJU, palūgšu viņiem ar pateikt kādu vārdu :D

P.S. Man te sava veida uzklausīšana lielākoties, darbojas uz noteiktiem cilvēkiem! :D

Link to comment
Share on other sites

Arī ierakstīšu kaut ko, tik ne tik advancētu kā iepriekšējie cilvēki, kas gudrāki par mani :)

 

Vēlams ir padomāt kāda iemesla dēļ tu to taisi. Tikai sava prieka pēc (nav svarīgi vai kāds to izmanto), citu dēļ (svarīgi, lai citi izmanto), abu dēļ (visticamāk - svarīgi kaut ko iemācīties un par skādi nenāktu, ja kāds arī to lietotu). Pieļauju, ka tādu pliku čata sistēmu neviens īpaši negribēs lietot. Vajadzēs taisīt ko interesantāku. Piemēram ko tādu, ko var embedod citā lapā izmantojot tavu API un/vai ko tādu, kam var nolādēt source'i un likt savā lapā.

 

Tā kā vēlies kaut ko arī iemācīties, tad izmanto kaut ko, ko neesi izmantojis iepriekš. Mani, piemēram, kādu laiku interesē Redis tik neesmu atradis laiku un projektu kur to izmantot. Arī šādam čatam tas būtu noderīgs. Tehnoloģijas tālāk jau vari izvēlēties skatoties uz specifikāciju - ko vajag galā, piemēram, Redis izmantot nebūtu sevišķi labi, ja piedāvā čatu kā lejupielādējamu source'i, kuru citi cilvēki var lietot, jo reti, kurš hostings nodrošinās Redis atbalstu. Tad izvēlies socket'us vai ajax utt...vari testēt arī html5 iespējas (tik zini, ka būs grūti ar veco pārūku atbalstu).

 

Katrā ziņā viss ir tavās rokās ^_^

Link to comment
Share on other sites

Bļāviens, tiešām man jāraksta kaut kas? Es ar tik gudri nemācēšu izteikties, kā te daži :)

 

Ja es to taisītu, tad taisītu primitīvi un vienkārši...

Čats tak ir tā pati komentāru sistēma, praktiski tas pats forums, tikai atšķirība ir tā, ka ziņas parādās reālā laikā, nepārlādējot lapu, vienkāršā sarakstā...

 

Iztēlojos pāris tabulas:

 

users:

user_id (auto incerement, pēc kā identificē lietotāju), username (redzamais vārds), password

 

rooms:

user_id (istabas īpašnieks), room_id (auto increment, istabas indetifikators), room_name (redzamais vārds), password (ja nu piekļuve tikai ar paroli)

 

chat_messages:

message_id(auto incerement, ziņas identifikators), room_id (istabas identifikators), user_id (rakstītājs), time (kad rakstīts), message_text

 

Visus saziņu starp lietotāju un serveri varētu taisīt ar ajax (kaut gan tas nebūtu diez ko efektīvi, daudz konekciju sanāktu).

 

Nu kaut kā tā... Pa vienkāršo...

Edited by briedis
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...