Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

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
Posledné komentáre sú na spodnej časti poslednej stránky.
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

Editované
Avatar
Odpovedá 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
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ě.

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 :)

Avatar
Milan Turyna
Tvůrce
Avatar
Odpovedá 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.

Editované
Avatar
michaelmik
Člen
Avatar
michaelmik:5.12.2020 18:10

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

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();
});
Posledné komentáre sú na spodnej časti poslednej stránky.
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.

Zobrazené 7 správy z 27.