NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - Návštěvní kniha přes WebSocket - Zprovoznění komunikace

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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

 
Odpovědět
30.11.2015 16:06
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá 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ář :).

 
Odpovědět
30.11.2015 16:18
Avatar
Odpovídá 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.

 
Odpovědět
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.

 
Odpovědět
5.4.2016 16:21
Avatar
shaman
Člen
Avatar
Odpovídá 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?

Odpovědět
18.7.2016 0:02
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá 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');
Editováno 18.7.2016 0:27
 
Odpovědět
18.7.2016 0:26
Avatar
shaman
Člen
Avatar
Odpovídá 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?

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

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

Odpovědět
18.7.2016 9:51
New kid back on the block with a R.I.P
Avatar
shaman
Člen
Avatar
Odpovídá 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?

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

Přesně tak.

Odpovědět
18.7.2016 11:00
New kid back on the block with a R.I.P
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 27.