2014-12-22 1 views
5

ho letto molto su StackOverflow, ma dopo una settimana di riflessione e di ricerca, Sono in esecuzione bloccato ...la comunicazione tra i server websocket

Quindi devo proprio chiedere :)

Speranza spiego la problema correttamente, in caso contrario, per favore dire!

Il problema è semplice. Ho bisogno di 2 server ... Server A - che non fa altro che riempire un database ogni 15 minuti e il server B che fa i dati dal server A.

È facile lasciare che il server B esegua una richiesta http per i dati, ma quello che voglio veramente, è che il server B ottiene un 'aggiornamento del socket' dal server A, ogni volta che ha aggiornato i dati del database.

Il problema: è che il server B non è sempre sullo stesso URL .... Quindi il server di database non può semplicemente fare una richiesta di get/post, perché non sempre saprà il suo URL.

Ecco perché mi auguro, che il server B può iniziare una connessione socket.io al server di database .. Mantenere la linea aperta al server A, in modo che il server A in grado di rispondere con i suoi nuovi dati del database, sopra la presa già stabilito connessione ....

Quindi in pratica ... È possibile avere una connessione socket.io comune tra 2 server .. proprio come fa un server tra un client ???

Davvero grazie !!!

AGGIORNAMENTO: Per chiarire un po '.

Possiedo un database di magazzino .. Riceve tutti i dati, ogni 15 minuti, da un'API di trading. Questo server non deve mai fermarsi! Potrebbe, ma è fastidioso, perché i dati saranno incoerenti ...

Ho un altro script, che sarà sempre in fase di sviluppo .. Questo fa i calcoli sui dati dal server del database. Quindi avrà (dev) errori, ecc. Di tanto in tanto .. Questo script non dovrebbe fermare lo script 'database ticker' ... Quindi voglio eseguirli separati gli uni dagli altri. Ecco perché ho bisogno di 2 server che collegano con l'altro ..

mio database è in esecuzione da un URL fisso .. Ma il mio script lo sviluppo dipende da dove ho sviluppato in questo momento ..

Forse c'è una soluzione migliore per quello che sto cercando di raggiungere ..?

+0

basta usare la dipendenza socket.io-client sul server client – zaynetro

+0

Hmm sembra la strada da percorrere! Ci proverò, darò una soluzione per la soluzione se funziona :) – DutchKevv

+0

@zaynetro, Sai se entrambe le parti devono usare il socket.io-client?Causa Continuo a ottenere errore 404 quando provo a connettermi a quel server .... – DutchKevv

risposta

1

dovrebbe essere possibile, i server sono spesso client di altri server. Puoi anche fare in modo che un server ascolti su più di una porta - il server A potrebbe ascoltare le connessioni dal server B (B con l'url di modifica) potrebbe stabilire la connessione al poll per le modifiche da A. Oppure, come hai detto, avere A spingerli.

È possibile utilizzare il modulo nodo http per effettuare richieste; ecco una sintesi:

http = require('http'); 
var call = http.request(
    { hostname: "google.com", 
     port: 80, 
     path: "/", 
     method: "GET", 
     auth: "user" + ":" + "password" 
    }, 
    function(res) { 
     var data = ""; 
     res.on('data', function(chunk) { 
      data += chunk; 
     }); 
     res.on('end', function(err) { 
      console.log("Response was", data); 
     }); 
    } 
); 
req.write(""); 
req.end(); 
+0

Grazie per il veloce commento! :) Ma sì, penso anche che sia possibile .. Ma il problema mi sta succedendo nella mia testa ... È che un browser "avvia" una connessione client ... Come posso lasciare che un server "avvii" una connessione socket ad un'altra server .. – DutchKevv

+0

il modulo 'http' può fare requet; ci sono anche pacchetti npm come 'restify' che possono essere utili se sono necessarie funzionalità più sofisticate. Modificherò la mia risposta con un esempio – Andras

+0

sì, ma questo è il mio punto sulla domanda .. Non è difficile fare una richiesta http .. Ma il server di database non può fare un http indietro, perché non sarà sempre ora l'URL corretto di i server che stanno 'ascoltando'. Ecco perché socket.io sembra una soluzione perfetta .. una richiesta http si chiuderà dopo un po ', e a quale URL dovrebbe il database postare i suoi dati allora? – DutchKevv