Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 3. diel - Návštevná kniha cez WebSocket - Sprevádzkovanie komunikácie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Dominik Dosoudil:30.11.2015 16:06

Ahoj,
nejdříve bych chtěl velice poděkovat za návod, protože jsem toho o websocketech nemohl moc najít a když už, tak mi to jako začátečníkovi s node.js vůbec nestačilo.

Nicméně mám 2 problémy.
Jednak na řádku 7 v souboru AutoLoader.php nešel include, protože soubory jsou ve stejné složce. Problém jsem vyřešil přidáním tečky před /. To zmiňuji jen pro případ, že by měl někdo stejný problém nebo že by to zaviňovalo můj druhý problém.

if(!include("/classes/$class.php")) {

jsem přepsal na

if(!include("./classes/$class.php")) {

Druhý problém je ten, že vše vypadá v pořádku, v prohlížeči dostanu hlášku "Povedlo se! Nodejs vrací true!" ale zprávy se nezobrazují. Zkoušel jsem i mezi Socket.on nacpat alert, ale stále nic.

Sockets.on('Test', function(data) {
    alert();
});

Podle mého je problém buď v tom, že js neposlouchá nodejs server nebo WebSocketApi.php neposílá zprávu na server. (Což by mělo, když vrací true, ne?)

Má někdo nějaký nápad, čím by to mohlo být?

Funguji na OSX, jako localhost server používám MAMP

Díky, Dominik

 
Odpovedať
30.11.2015 16:06
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovedá na Dominik Dosoudil
Patrik Smělý:30.11.2015 16:18

Ahoj, problém s "./" a "/" jsem neměl protože funguji na windows platformně vzhledem k tomu že jsi na OSX což je jakoby pod linuxem tak to asi bude tím linuxem protože jsem stejný problém měl na mém linuxovém serveru tak to vidím že je to opravdu linuxem :).

Ahoj nejsem si jist ale je to možná portem na kterém nodejs jede, funguje ti stránka s bad requestem na http://localhost:4000 jeslti ne tak se opravdu jedná o problém s portem proto změn v serverovém scriptu port třeba na 3000. On je problém že OSX si možná zabírá port 4000 pro nějakou službu :).

Doufám že jsem pomohl a děkuji za komentář :).

 
Odpovedať
30.11.2015 16:18
Avatar
Odpovedá na Patrik Smělý
Dominik Dosoudil:30.11.2015 19:54

Ahoj,
zkoušel jsem 4000, 4100 a teď i 3000. Všechny porty háží Bad request i "Povedlo se! Nodejs vrací true!".
Avšak zprávy stále nechodí.
Ještě jsem zapomněl napsat, že mi to do body háže znak "1" který si nedokáži vysvětlit :D. Napadlo mě, že by to mohlo být true, ale nikde nevidím žádný výpis, který by to tam mohl dávat.

 
Odpovedať
30.11.2015 19:54
Avatar
reddi
Člen
Avatar
reddi:5.4.2016 16:21

Ahoj, jedničku to tam hází z metody mainMethod(), jelikož je na konci echo a include šablony se provede.

 
Odpovedať
5.4.2016 16:21
Avatar
shaman
Člen
Avatar
Odpovedá na Patrik Smělý
shaman:18.7.2016 0:02

Zaujimavy koncept.
Ako to planujes osetrit aby sa na ten websocket nemohol napojit hocikto a pocuvat?

Odpovedať
18.7.2016 0:02
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovedá na shaman
Patrik Smělý:18.7.2016 0:26

Ahoj,

Pokud si myslel například ze svého webu kde budeš mít socket.io klienta tak je to jednoduché, ošetření je prováděno přes originy, jednoduše na serverové straně (NodeJs) nastavíš že se klienti můžou připojit jen z určité ip:portu / domény:portu implementace pak vypadá následovně. (Ze základu je připojení povoleno odkudkoliv)

io.set('origins', 'www.example.com:80');
Editované 18.7.2016 0:27
 
Odpovedať
18.7.2016 0:26
Avatar
shaman
Člen
Avatar
Odpovedá na Patrik Smělý
shaman:18.7.2016 9:45

uzivatel nema origin. Uzivatel ma IP adresu. Na tej istej IP adrese je kopa ludi ktory nemaju alebo by nemali mat pristup k websocketu? V pripade knihy navstev je to ok, ale co ked budem robit chat? Ako by si to osetril?

Odpovedať
18.7.2016 9:45
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na shaman
David Hartinger:18.7.2016 9:51

Uživatel chatu bude registrovaný, bude mít nějaké ID.

Odpovedať
18.7.2016 9:51
New kid back on the block with a R.I.P
Avatar
shaman
Člen
Avatar
Odpovedá na David Hartinger
shaman:18.7.2016 10:06

takze id bude mat uzivatel nastavene napr. v session
a websocket bude mat zoznam povolenych ID ktorym ma propagovat spravy?

Odpovedať
18.7.2016 10:06
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na shaman
David Hartinger:18.7.2016 11:00

Přesně tak.

Odpovedať
18.7.2016 11:00
New kid back on the block with a R.I.P
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!