Autor Zpráva
Foi
Profil
Zdravím,

bylo mi doporučeno, ať k websocketům použijí nodejs (socket.io) jako prostředníka, tak jsem tak udělal. Teď nastává nejsložitější otázka, jak komunikovat (nejlépe interně bez HTTP requestů) nodejs -> PHP s tím, že potřebuji znát odpověď od PHP serveru?

Projížděl jsem hodně materiálu a většinou to je Elephant.io, redis, RabbitMq (jiný mq). Jenže to je všechno dobré, pokud nepotřebuji znát odpověď na to odešlu nebo se pletu?

Zkráceně potřebuji:

1) Nodejs řekne PHP serveru: Je tento uživatel přihlášen s tímto tokenem?
2) PHP: Ano je, tady jsou jeho data
3) Pokračování v nodejs

Nic více nepotřebuji. Informace klidně dohledám.

EDIT: možná u RabbitMq je řešením exchange_bind, vyzkouším
Mlocik97
Profil
v Node.js spawnite proces PHP, predajte mu argumentami údaje o uživatelovi a tokenu, nechajte PHP porovnať tieto hodnoty voči hodnotam v sebe, alebo hodnotám ktoré získa z databázy, a odpoveď vráťte do nadriadeného procesu (teda node.js)

v Node.js teda iba použijete:

var spawn = require("child_process").spawn
var php = spawn('/php', ['./script.php'], {env: { user: "janko", token: "4df2e168c" }};
php.stdout.on('data', function(data) {
    if (data.isLogged === true) {
        console.log("uživatel janko je prihlášen pomocou tokenu 4df2e168c");
        console.log("tady sú jeho data" + data.userData);
   }
};

druhý spôsob je vytvoriť 2 samostatné procesy, a dáta vymienať jak už bolo spomenuté cez nejaký message broker (napríklad redis či mq)


"Projížděl jsem hodně materiálu a většinou to je Elephant.io, redis, RabbitMq (jiný mq). Jenže to je všechno dobré, pokud nepotřebuji znát odpověď na to odešlu nebo se pletu?"


môžete to použiť na lubovolné vymienanie dát. Po prečítaní teda môžete druhým procesom zapísať do iného objektu/premennej odpoveď a informovať o zmene dát iný proces (napríklad signálom (SIGUSR1)).

Ja cez Redis alebo child_process práve zabezpečujem komunikáciu medzi node.js a golang
Foi
Profil
Mlocik97: Děkuji za odpověď

Zapomněl jsem si přečíst krásný tutoriál na jejich stránce: www.rabbitmq.com/tutorials/tutorial-six-php.html

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0