Senden Sie ein Ereignis mit dem node.js-Socket-Client an sails.js (0.11.x) [duplizieren]

9

Der Server : sails.js (0.11.x) ist der Server

Der Client : Ein node.js-Skript mit [email protected] und [email protected]

Großes Bild : Ich habe oder werde eine Farm mit node.js-Skripten haben, die eine Verbindung zum Server sails.js herstellen und verschiedene Aufgaben ausführen.

Unmittelbares Ziel : Ich möchte während einer Socket-Verbindung vom Client- & gt; -Server ein Ereignis wie:

ausgeben %Vor%

Warum? Wenn dies möglich ist, kann ich verschiedene Event-Handler auf der Serverseite in einem Controller (oder Controller + Service) erstellen und meinen Code sauber halten, während eine Reihe von Stateful-Transaktionen zwischen Client / Server-Endpunkten zur Unterstützung dieser Skriptfarm verwaltet wird.

Die Dokumentation : So geht man bei der Verwendung von socket.io-client für sails.js pro Dokument: Ссылка

Ich habe nicht viel Code zu teilen außer was in diesem Link ist, aber ich werde es hier einfügen, nur für den Fall:

%Vor%

Was ich untersucht habe : Ich habe verschiedene Ebenen dieser Objekte gebohrt und ich kann anscheinend nichts finden, was benutzt werden könnte. Und versuchen Sie einfach io.socket.emit (), da es nicht existiert. Aber io.socket.get () und io.socket.post (), usw. funktionieren gut.

%Vor%

Danke, und ich werde versuchen, dies zur Klärung zu aktualisieren.

UPDATE :

Verschiedene Serverinformationen. :

  • Ich benutze nginx auf Port 443, mit SSL Terminierung, auf 4 (und bald mehr) sails.js Instanzen auf separaten Ports (3000-3003).
  • Ich verwende Redis auch für Sitzungen und Sockets.
nodnarB 04.06.2015, 21:11
quelle

1 Antwort

3

Sie sind in der Nähe:

Ihr io.socket.get-Anruf ist wie ein Ruhe-API-Anruf. Du brauchst einen Segel-Controller, der an eine get-Anfrage in der URL '/ hallo' gebunden ist,

%Vor%

in

%Vor%

Die Methode, nach der Sie suchen, ist io.socket.on ('eventName');

Hier ist ein Beispiel:

%Vor%

Was wir effektiv gemacht haben, ist, unseren Socket als Teil eines "Raums" einzurichten, der im Grunde ein Ereignis-Namespace ist. Dann muss ein anderer Controller dies nur tun:

%Vor%

Nachdem dieser Anruf getätigt wurde, erhalten Sie die Nachricht im Callback von io.socket.on ('anevent').

    
aclave1 23.07.2015 18:06
quelle