Pulse - asinkroni PHP za dvosmjernu komunikaciju server-client

Nije trik pitanje, nadao sam se točno takvom odgovoru.

Nadam se da sada konačno možemo ustvrditi sve preduvjete dvosmjerne komunikacije, a to su:

  • nakon uspostave veze, obje strane moraju moći poslati poruku u bilo kojem trenutku. (Bez da to druga strana mora zahtjevati)
  • vrijeme isporuke poruke ne mora biti trenutno (niti može biti trenutno u praksi)
  • to kašnjenje je karakteristika dvosmjerne komunikacije i nazivamo je “latencija”

Ako sam koji bitan propustio, molim nadopuni me?

Onda očiti nisi uspjela razumjeti moju analogiju. A vjerujem da ti to možeš. Za brus lija doduše sumnjam.

A ja verujem da ti dobro znaš šta je pravu definiciju dvosmerne komunikacije, ali ti je lepo da nas zajebavaš ovde već peti dan. :grin:

Samo malo, koristim definiciji koju si ti upravo dala. Dao sam ti tu privilegiju i dobro si to odradila. Svaka čast.

Nego, sada odjednom je neka druga prava? Nešto se promjenilo na wikipediji u međuvremenu?

Ma pusti wikipediju tamo može da piše ko šta hoće…

Pa ok je, piše isto što si i ti rekla:

A Pulse to može :slightly_smiling_face: (Naravno, dok ne dođe BrusLi i kaže da ne može)

Pulse to ne moze, jer ne koristi protokol koji to omogucava. Prosto i jednostavno. Tacka, gasi temu :slight_smile:

Definicija dvosmjerne komunikacije

P.S. Ovo boldano je čak nepotrebno navoditi u definiciji, jer to proizlazi iz tvrdnje da bilo koja strana mora moći poslati poruku u bilo kojem trenutku.

Tj. kad bi jedna strana morala zahtjevati poruku, to znači da druga strana nebi bila u mogućnosti poslati poruku u bilo kojem trenutku.

Stoga wiki ima potpunu i jasnu definiciju: Dupleks komunikacija — Википедија

Haha, stvarno će biti neka disleksija?

Da ponovimo:

“Jedrilica ne može da plovi uz vjetar, jer koristi jedro koje ne može samo ići uz vjetar”

Samo što … jedrilice itekako plove uz vjetar. I to one bezmotorneeeee :grin::smile::sweat_smile:

Odi i reci im da je to samo prividno, da one zapravo ne idu uz vjetar.

Objasni im da ići uz vjetar ima drugačije značenje kada brod plovi uz vjetar, a drugačije kada jedrilice koje se koriste jedrima idu uz vjetar. Jer ako jedrilica ima jedro, onda značenje “ići u vjetar” sporazumjeva da jedro mora moći samo ići uz vjetar da bi ustanovili da jedrilica plovi uz vjetar. A ovo što objektivno mjerimo da jedrilica plovi uz vjetar, to je samo prividno. :laughing:

Ne razumem se u jedrilice opet, verovatno im zakon fizike to dozvoljava da plove uz vetar. Tebi HTTP protokol ne dozvoljava da napravis to sto mislis da si napravio u svojoj glavi. Zakoni su drugaciji, jednostavno.

Jedru zakoni fizike ne dozvoljavaju da samo po sebi ide uz vjetar.
No jedrilica je više od jedra i zato ona može jedriti uz vjetar. (Tajna je u kobilici, koja ju fiksira za more blokirajući smik pomake, pa jedrilica ostvaruje progress uz vjetar pod određenim kutem i ide tako cik cak do konačne željene destinacije)

Zskoni fizike http requestu ne dozvoljavaju dvosmjernu komunikaciju, no Pulse je više od http requesta i on ostvaruje dvosmjernu komunikaciju. (Tajna je u HDD-u, koji fiksira static vrijednosti između procesa i u mogućnosti da Pulse u svakom momentu drži više otvorenih ajax requestova, kako bi u svakom momentu server mogao da šalje poruku, neovisno od toga što tada client radi, i jel uopće i živ u vrijeme kad server poželi slati poruku. A čak će i ta poruka preživjeti, jer Pulse osigurava da ima još jedan http request otvoren u backgroundu, koji će oživjeti server u tom slučaju i forsirati server proces da ostane živ dok se client ne vrati online)

Vidiš da može :slightly_smiling_face:
Mislim za jedrilicu, znam da za Pulse već znaš, samo se praviš grbav. Nisi ti disleksičan kao što se praviš da jesi, jer da jesi nebi onda negodovao odgoviriti na pitanje jel mobitel ima dvosmjernu kominikaciju. Znaš ti jako dobro da si time kontradiktoran sam sebi pa si odlučio lukavo prešutiti odgovor na to pitanje.
Čuj “lukavo” … sve si ti samo ne lukav dok nisi sposoban mijenjati netočne stavove.

Za razliku od tebe koleginica stvarno odaje znakove disleksije, a to je zato jer (odat ću vam tajnu) … zato jer je ona polu AI bot, pola čovjek. Pa kada je bot onda pokazuje izvanrednu količinu znanja na specifična pitanja, a disleksična je kada pitanje ima puno kontekst informacije vezane uz temu i tu onda baljezga, tj. gubi fokus. A kad je čovjek, onda joj je narav pomalo …
(Koleginici isprika ako sam promašio, ali sumnjiva mi je od samog početka, a svaka iduća poruka mi je potvrđivala sumnje. Neka pitanja je dobivala samo da je testiram i sva su mi potvrdila pretpostavku, što ne znači da i dalje nisam mogao omašiti. Dok sam za Pulse 100% siguran da ostvaruje 2smjernu komunikaciju, ovo ipak ne mogu biti 100% siguran)

Ako ti se nije dopala ona analogija, evo stručnijeg objašnjenja.

Imamo komunikacijski uređaj A koji koristi komunikacijski kanal A koji redovito puca. Kada se nazovemo putem komunikacijskog uređaja A, osuđeni smo na nestabilnost i učestalo pucanje veze.
Za uređaj A ne možemo tvrditi da ima stabilnu vezu.

Zatim imamo komunikacijski uređaj B koji u svojoj pozadini koristi ništa drugo nego komunikacijski kanal A koji je nestabilan i puca… no komunikacijski kanal B zato osigurava da ima uvijek otvoreno po nekoliko kanala A, kako bi u trenutku pucanja nekog A kanala se prebacio na idući živi kanal A.
Tako kada se nazovemo putem uređaja B imamo stabilnu i dugotrajnu vezu neovisno od toga što unutar njega veze na kanalu A konstantno pucaju.
Za uređaj B možemo tvrditi da ostvaruje dugotrajnu i stabilnu vezu.

Time vidimo da veza na razini uređaja B nije isto što i veza na razini pojedinog kanala A kojom se uređaj koristi.

Isto vrijedi i kod Pulse.
Veza na razini Pulse, nije isto što i veza na razini pojedinog ajax requesta kojim se on koristi.

Vaš još jedan od problema je moguće što krivo tumačite riječ “veza”.

Vi ju gledate kao fizičku povezanost kojom putuje pojedini signal i onda se ograničavate da takva veza može biti ili jednosmjerna ili dvosmjerna i onda ako na nekoj razini sustava vidite da ima jednosmjernu vezu, mislite da je time sustav kao cjelina ograničen na jednosmjernu vezu.

Greška je u početnoj pretpostavci da veza predstavlja tu fizičku povezanost.

Veza znači upravo to što znači, vezu ili ti povezanost.
Povezani možemo biti na razne načine.
Recimo kada pričamo sa mobitelom, povezanost je osigurana putem radio valova koji zasigurno nemaju neki zračni kanal gdje istovremeno isti val putuje prema objema stranama, nego mobitel kao uređaj osigurava tu funkcionalnost da obje strane budu na vezi, znači simultano prima i odašilje EM valove i osigurava da razmjena informacija unutar jednog poziva ode na ispravnu drugu stranu, a ne bilo kome. Znači od puno jednosmjernih tokova signala, dobivamo rezultat dvosmjernog razgovora. (A to na kraju dana mora biti slučaj za svaku, ama baš svaku dvosmjernu vezu …negdje ispod haube stvar se rasčlanjuje, na više jednosmjernih kanala, jer ne znam po kojoj to fizikalnoj osnovi bi ikakav kanal mogao istovremeno prosljeđivati signal u oba smjera. Može velim, samo ako je slojevit i u sebi sadrži više istosmjernih linija toka signala)

Uglavnom, mobitel kao uređaj održava vezu. Razbij mobitel usred razgovora i veza će puknut, druga strana će čuti “tu-tu-tuuuu”

Veza može biti i direktno fizička putem kabla, kao što imamo serial port kada spajamo razne uređaje na komp.
Isčupaš kabal, nestane veza.

Uglavnom, veza znači biti povezan i može biti izvedena na razne načine.

Pulse-ov zadatak je upravo to da održi konstantu vezu između klijenta i servera bez obzira na to što unutar njega nastaje mnogo pod-veza koje periodički nastaju i pucaju, on to sve hendla i obje strane drži konstantno na vezi, pa čak i u slučaju ako jedna strana ode offline.

To bi bilo ekvivalent da ovi što pričaju na mobitel, da netko od njih ugasi/upali mobitel i da može nastaviti razgovor na istoj uspostavljenoj vezi i da pri tome ima pristup i informaciji koja je bila rečena dok je on bio off, tj. ugašen.

Ja mislim da bi administrator trebao da zaključa ovu temu, jer više nema svrhe da se ovde bilo šta piše, jer se samo vrtimo u krug. Nas troje tvrdimo jedno, a ti sa druge strane pokušavaš da nas ubediš kako mi zapravo nemamo pojma i kako 2+2 nisu 4 nego su 64.

I mogu da ti kažem da si vrlo tvrdoglava osoba koja ne može da prihvati tuđe mišljenje, čak i ako je ono ispravno, a to nije dobra osobina. I to čak i nije naše mišljenje, to je osnovna i dobro poznata stvar. Loše je to, veoma loše i iskreno mi je žao zbog tebe što na takva pogrešan način razmišljaš. Moj ti je predlog da počneš da radiš na tome i da suzbiješ tu lošu naviku.

A baš ste puno argumenata dali za svoj pogled.

Uvjeravate me da uređaj koji omogućava da simultano dvije strane komuniciraju da je to uređaj koji ne omogućava dvosmjernu komunikaciju. Hjoooooooooj … to vam ni malo dijete nebi povjerovalo i to sam objasnio odmah u početku teme.

Nije egzaktna znanost ustvrditi dali uređaj omogućava dvosmjernu komunikaciju.

Mislim, iznjela si definiciju dvosmjerne komunkacije. Pulse zadovoljava uvjete definicije 100/100. :wink: Što sada ne valja?

Nema potrebe da izoliramo bilo sta, kad pricamo o konkrentim i standardizovanim stvarima. S druge strane, valjda kao neki programeri mozemo se voditi nekim faktima bez analogija o galaksijama, telefonima i starcima koji se bockaju stapovima.

Long-polling (sto je i sam Pulse) je i dalje samo jedan od request/response patterna koji su ljudi koristili godinama unazad da bi omogucili koliko-toliko real-time sposobnosti u svojim sistemima. Long-polling po nicemu nije drugaciji od short-pollinga kada pricamo o stvarima gdje zelimo korisniku predstaviti podatake u real-time. Obe tehnike su zasnovane na HTTP-u i sam HTTP je request/response baziran, to sto ti odlazes response dok server nema sta da kaze ili timeout istekne, pa onda kad client zaprimi response i posalje drugi request to nije full-duplex dvosmjerna komnikacija. Sve je i dalje zasnovano na request/response modelu i ti nakon sto instanciras svoje Pulse klase i dalje imas depenecy izmedju clienta i servera u smislu da za svaki isporuceni odgodjeni response, moras poslati novi request prema serveru - ako nema tog subsekventog requesta prema serveru onda server ne moze dostaviti podatke koje su spremne na njegovoj strani.

Mislim, dovoljno je da proguglas par clanaka na internetu i vidjeti ces se na svim mjestima long-polling smatra simulacijom prave bi-direkcionalne komunikacije. WebSocket je upravo izmisljen zbog limitacija koje HTTP ima, da je long-polling stvarna bi-direkcionalna komunikacija onda ne bi bilo potrebe ni da imamo WebSockets.

Znaci, da ponovo odgovorim sta je dvosmjerna komunikacij, drzeci se konteksta (koji je btw bitan):

Dvosmjerna komunikacija je vid full-duplex komunikacije gdje nakon inicijalnog handeshake-a i acknowledgementa od strane clienta obe strane mogu istovremeno, bez ikakve zavisnosti (sve dok je konekcija otvorena) jedna od druge razmjenjivati poruke. Long-polling pattern kao takav ne omogucava takav vid komunikacije jer za svaki poslani response, client mora uraditi ack i otvoriti novi request - ako nema requesta, nema ni nacina da server posalje response, i ne ovo nije puko pitanje latencije vec cijeli koncept i ideja zbog koje je nastao WS.

Ok, nećemo o galaksijama.
Ova tvoja definicja, sa kojom se ja slažem …Pulse je također potupno ispunjava.
Ne razumijem kako tvrditi da je ne ispunjava, ako je ispunjava. Takvu kakvu si je dao i takvu kakva je na wiki.

Evo kako izgleda argumentiranje kada je druga strana lišena ega i ima sposobnost napustiti svoje pretpostavke: https://chatgpt.com/share/67406c2b-12d8-8000-bb0a-9e3dc62dbff6

I ovaj razgovor s njom sam namjerno krenuo iz pozicije gdje ona zauzima vaš stav da vidim kako će reagirati na argumente. I sve argumente je razumjela, ali baš se vidi da ih je razumjela, a ne pratila moju želju. Čak je kontrirala koliko gdo je mogla dok je nisam suočio sa njenom definicijom dvosmjerene komunikacije, kao što sada suočavam tebe (vas) sa vašom definicijom dvosmjerne komunikacije.

Jebaj ga, ne možete imati definiciju nečega, a onda se sami te definicije ne držati. To vas ne vodi ama baš nikuda.

Ovdje smo da ustvrdimo što su fakti, a ne da se iznesu pročitani fakti i bez argumentiranja tvrdite da su oni točni. Dok ih ne možete dosljedno primjeniti na vlastitu definiciju, oni po nečemu nisu skroz točni.

Oni doduše i jesu točni, ali ih vi krivo interpretirate za različitu situaciju.

Fakt jeste da ajax ne omogućava dvosmjernu komunikaciju (sam po sebi)…ali isto tako je fakt da je cjelina veća od zbroja svojih djelova, pa postoji način da se izgradi sistem koji će koristeći elemente za jednosmjernu komunikaciju postići karakteristike dvosmjerne komunikacije.

A ako si postigao karakteristike dvosmjerne komunikacije, onda je nosense tvrditi da to nije dvosmjerna komunikacija.

Ja bih ovo sve u chat gpt zalijepio i neka on odluci ko je upravu.

Neka vam on bude sudija.

1 Like

Dvosmjerna komunikacija je termin koji postoji prije nego server i klijent.
Dolazak servera i klijenta nisu promjenili značenje izraza dvosmjerna komunikacija.

Ja kad kažem da Pulse omogućava dvosmjernu komunikaciju, mislim na pravi pojam “dvosmjerna komunikacija” … a ne na neku izvedenicu koju vi mislite da postoji.
A čak niti ne postoji nikakva izvedenica, jer tvoja definicija se paše sa pojmom “dvosmjerna komunikacija” lišene konteksta. Samo umjesto strana A i B koristiš izraze klijent i server.
No dvosmjerna komunikacija je razmjena infirmacije između A i B, gdje oni mogu biti bilo što, kao što i kanal toka informacije može biti bilo što. Ako dvije osobe razgovaraju na ulici, to je također dvosmjerna komunikacija.