Instalace iPublikuj/websockets

pista5
Člen | 72
+
0
-

Zdravim,
mam problem ihned pri instalaci… nize je obsah services.neon

Obdrzim chybu:

Nette\DI\InvalidConfigurationException
Unexpected item ‚webSockets › clients‘

Dekuji za radu.


extensions:
    - Contributte\FormMultiplier\DI\MultiplierExtension
    dependentSelectBox: NasExt\Forms\DependentExtension
    webSockets: IPub\WebSockets\DI\WebSocketsExtension

webSockets:
    clients:
        storage:
            driver: @clients.driver.memory
            ttl: 0
    server:
        httpHost: localhost
        port: 8080
        address: 0.0.0.0
    routes: []
    mapping: []
nightfish
Člen | 517
+
0
-

@pista5 Pravděpodobně je chyba v dokumentaci. Podle kódu musí být clients zanořeno pod storage, tzn:

webSockets:
    storage:
        clients:
            driver: @clients.driver.memory
            ttl: 0
pista5
Člen | 72
+
0
-

Jasne, diky… v navodu je chyba

nightfish
Člen | 517
+
0
-

Na Githubu v masteru je to již opraveno.

pista5
Člen | 72
+
0
-

Prima… jsem ale v tomto zacatecnik a ted jeste resim, jak server spustit?

Jak si mam poradit s timto? Kam toto umistim? Diky

$configurator = new \Nette\Configurator;
$container = $configurator->createContainer();
$container->getByType(\IPub\WebSockets\Server\Server::class)->run();

nightfish
Člen | 517
+
0
-

@pista5
Záleží na tom, jestli tvá aplikace používá symfony/console pro definici a spouštění konzolových příkazů – pokud ano, tak v konzoli z rootu projektu spustíš php web/index.php ipub:websockets:start (kde web/index.php je cesta k souboru index.php, který bys asi už měl mít).

Pokud symfony/console nemáš nebo nepoužíváš, tak je potřeba vytvořit nový soubor, přes který budeš server spouštět. Může to být třeba <project root>/bin/run-server.php, jehož obsahem bude kód z https://github.com/…Bootstrap.md, upravený na míru tvému projektu (primárně se jedná o názvy adresářů – někdo má aplikační kód v app, jiný v src; obdobně pro document_root, který bývá třeba ve www, web nebo public).

Následně pak můžeš server spustit v konzoli z rootu projektu php bin/run-server.php.

pista5
Člen | 72
+
0
-

Diky moc za objasneni…

Po spusteni pomoci php bin/run-server.php jsem skoncil na nize uvedene chybe. Myslim, ze router mam nadefinovany dobre:


PHP Warning:  Undefined array key "filterTable" in D:\localhost_html\www9\vendor\ipub\websockets\src\Router\Route.php on line 610
PHP Fatal error:  Uncaught TypeError: array_flip(): Argument #1 ($array) must be of type array, null given in D:\localhost_html\www9\vendor\ipub\websockets\src\Router\Route.php:610

webSockets:
    storage:
        clients:
            driver: @clients.driver.memory
            ttl: 0
    server:
        httpHost: localhost
        port: 8080
        address: 0.0.0.0
    routes:
        '/chat/<room>' : 'Chat:'
    mapping:
        *: App\Controllers\*Controller

Marek Bartoš
Nette Blogger | 1263
+
0
-

To vypadá na chybu v knihovně, nahlásil bych ji

pista5
Člen | 72
+
0
-

No je mi divne, ze by tam byla takovato fatalni chyba – to by nefungovalo nikomu

Kdyz to dam bez routy… routes: [], tak to nabehne

pista5
Člen | 72
+
0
-

Tak jsem zkusil dle navodu i druhou moznost definovani routy a stejna chyba :(

services:
    - {class: App\RouterFactory, tags: [ipub.websockets.routes]}

pista5
Člen | 72
+
0
-

Prosim, pouziva tu nekdo tu posledni verzi iPublikuj/websockets?
Nechce se mi verit, ze je tam tak fatalni chyba…

Nebo je nejake jine reseni pro Nette? Potrebuji do prohlizece dostat ihned notifikaci a nechci delat co vterinu dotazy AJAXem na server… diky

nightfish
Člen | 517
+
+1
-

@pista5 Zkus si cvičně oba výskyty $meta['filterTable2'] = $meta[self::FILTER_TABLE] === [] ? null : array_flip($meta[self::FILTER_TABLE]); v ipublikuj/websockets/src/Router/Route.php nahradit za $meta['filterTable2'] = ($meta[self::FILTER_TABLE] ?? []) === [] ? null : array_flip($meta[self::FILTER_TABLE]);.

pista5
Člen | 72
+
0
-

@nightfish Diky, pomohlo :)

pista5
Člen | 72
+
0
-

Narazil jsem na dalsi problem… potreboval bych to rozbehnout na klasickem sdilenem webhostingu, ale ipublikuj/websockets-zmq vyzaduje knihovnu ext-zmq, ktera na webhostingu samozrejme neni (resp. nevim o zadnem, kde by byla).

Je prosim nejaka i jina moznost, jak notifikace rozbehnout na obycejnem webhostingu?