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
Zdeněk Jurák:7.11.2019 16:58

Ahoj mám stejný problém jako Dominik a nevím si s tím rady. Zkoušel jsem instalovat nejnovější node 13.1.0 i starší 12.13.0. Do template.phtml zkouším dávat krom původních:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="http://localhost/Nodejs/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script src="http://localhost:4000/socket.io/socket.io.js"></script>

Stále se mi zprávy nezobrazují a nakonci kódu mám 1. A odpověď se mi vrací "Povedlo se! Nodejs vrací true! ". Dokonce jsem zkoušel nahrát i hotovou stránku a taky tam nefunguje real time. Vyřešil už to někdo? Děkuji

Editováno 7.11.2019 16:59
 
Odpovědět
7.11.2019 16:58
Avatar
Odpovídá na Zdeněk Jurák
Zdeněk Jurák:8.11.2019 10:21

Vyřešilo mi to:

npm install --save express@4.15.2
 
Odpovědět
8.11.2019 10:21
Avatar
Jan Štěch
Člen
Avatar
Jan Štěch:17.6.2020 23:07

Pro případ, že by měl někdo stejný problém jako já:
Když jsem do šablony připsal JavaScript pro připojení k Node.js serveru, začalo se posílat neskutečné množství GET požadavků na adresu Node.js serveru, avšak nic se nevypisovalo.
Problém byl vyřešen nahrazením řádky šablony zahrnující do dokumentu JavaScript socket.io (řádek 15). Nahradil jsem odkaz novou verzí (v době psaní tohoto příspěvku tímto: https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js) a vše začalo fungovat správně.

 
Odpovědět
17.6.2020 23:07
Avatar
michaelmik
Člen
Avatar
michaelmik:5.12.2020 10:52

Ahoj :) zkoušel jsem to celé přeinstalovat (včetně linuxu samotného) a chtěl jsem zkusit znovu zprovoznit websocket. Jel jsem podle návodu zde -> instalace, zprovoznění a zapnutí.

Po spuštění příkazu node server.js - v konzoli mi vypsalo Server jede na portu 4000 (jen pro informaci, konzoli a samotný web mám na jiném pc -> a přistupuju k tomu přes hamachi ip a teamviewer). po vložení třídy WebSocket a její vyvolání přes testovací tlačítko mi vyjede hláška-> povedlo se, nodejs vrací true. Po zadání ip 25.25.25.25:4000 do adresního řádku v prohlížeči mi vyjede hláška Bad Request, což tedy NodeJs funguje.

Nyní přejdu do šablony a vypíšu script: var Sockets = io.connect('25­.25.25.25:4000'); //ipv4 hamachi

Sockets.on('Test', function(data) {
    $('.messages').append("<span>" + data.name + ": " + data.message + "</span><br/>");
});

Po stisknutí tlačítka:

if(isset($_POST['test_socket']))
                    {
                        $webSocket = new WebSocket();
                        if ($webSocket->sendSocket("Test", ["name" => "Miroslav", "message" => "je nejlepší!"]) === true) {
                           $this->addMessageTrue("NODEJS proběhlo úspěšně!");

                       } else {
                           $this->addMessage("Nepovedlo se poslat data přes NODEJS!");
                       }
                    }

Tím pádem se vykoná addMessageTrue a vypíše mi pozitivní hlášku. Zde ta pozitiva končí.
Po tomto jdu se podívat do konzole a vyjekne na mě 6 chyb a to tohohle typu:

Access to XMLHttpRequest at 'http://25.50.105.208:4000/socket.io/?EIO=3&transport=polling&t=NOo61i0' from origin 'http://25.50.105.208' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
:4000/socket.io/?EIO=3&transport=polling&t=NOo61i0:1 Failed to load resource: net::ERR_FAILED
styles:1 Access to XMLHttpRequest at 'http://25.50.105.208:4000/socket.io/?EIO=3&transport=polling&t=NOo61vo' from origin 'http://25.50.105.208' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
:4000/socket.io/?EIO=3&transport=polling&t=NOo61vo:1 Failed to load resource: net::ERR_FAILED
styles:1 Access to XMLHttpRequest at 'http://25.50.105.208:4000/socket.io/?EIO=3&transport=polling&t=NOo62PP' from origin 'http://25.50.105.208' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
index.js:83 GET http://25.50.105.208:4000/socket.io/?EIO=3&transport=polling&t=NOo62PP net::ERR_FAILED

Zkusil jsem dát do index.php nebo do šablony:

<?php header("Access-Control-Allow-Origin:  25.50.105.208:4000") ?>

nebo

<?php header("Access-Control-Allow-Origin:  *") ?>

Což samozřejmě nefunguje. Je někdo, kdo měl podobný problém a dokázal ho nějak vyřešit?? :) Moc děkuji :)

 
Odpovědět
5.12.2020 10:52
Avatar
Milan Turyna
Tvůrce
Avatar
Odpovídá na michaelmik
Milan Turyna:5.12.2020 14:20

Ja tedy jsem necetl tento serial a ani se Node.js moc nevenuji, ale asi bys mel povolit origin na serveru na ktery se pripojujes, v tomto pripade se asi pripojujes na server ktery provozuje websockety, nikoliv PHP.

Editováno 5.12.2020 14:20
Odpovědět
5.12.2020 14:20
Řeš pouze to, co dokážeš ovlivnit.
Avatar
michaelmik
Člen
Avatar
michaelmik:5.12.2020 18:10

Dobře a jak to mám prakticky udělat? :)

 
Odpovědět
5.12.2020 18:10
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:5.12.2020 20:39

Uplne jednoduse, odesles "Access-Control-Allow-Origin: *" hlavicku z Node.js. Jelikoz vyuzivas knihovnu express, tak si staci ziskat response a zavolat metodu header(). Pokud chces odesilat header v ramci cele aplikace a nejen na urcite route tak by mohlo fungovat:

app.use(function(req, res, n) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    n();
});
Odpovědět
5.12.2020 20:39
Řeš pouze to, co dokážeš ovlivnit.
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 7 zpráv z 27.