Der Server: sails.js (0.11.x) ist der ServerEmit ein Ereignis mit node.js Socket-Client zu sails.js (0.11.x)
Der Client: A node.js Skript mit [email protected] und [email protected]
Abbildung groß: ich habe, oder haben wird, eine Farm von node.js Skripte, die mit dem Server verbinden sails.js und wird verschiedene Aufgaben ausführen.
Nahziel: Ich möchte ein Ereignis während einer Socket-Verbindung von client-> Server emittieren, wie:
socket.emit('got_job', job.id);
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: Dies ist, wie man geht über die Verwendung von socket.io-Client für sails.js dieser pro Segel docs: https://github.com/balderdashy/sails.io.js?files=1#for-nodejs
ich nicht viel Code als andere zu teilen, was diesen Link in ist, aber ich werde es hier nur für den Fall ein:
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
// Instantiate the socket client (`io`)
// (for now, you must explicitly pass in the socket.io client when using this library from Node.js)
var io = sailsIOClient(socketIOClient);
// Set some options:
// (you have to specify the host and port of the Sails backend when using this library from Node.js)
io.sails.url = 'http://localhost:1337';
// ...
// Send a GET request to `http://localhost:1337/hello`:
io.socket.get('/hello', function serverResponded (body, JWR) {
// body === JWR.body
console.log('Sails responded with: ', body);
console.log('with headers: ', JWR.headers);
console.log('and with status code: ', JWR.statusCode);
// When you are finished with `io.socket`, or any other sockets you connect manually,
// you should make sure and disconnect them, e.g.:
io.socket.disconnect();
// (note that there is no callback argument to the `.disconnect` method)
});
Was ich in sah: ich habe in verschiedenen Ebenen dieser Objekte gebohrt und ich kann nichts scheinen ausgesetzt zu finden zu verwenden. Und versuchen Sie einfach io.socket.emit(), da es nicht existiert. Aber io.socket.get() und io.socket.post(), usw. funktionieren gut.
console.log(socketIOClient);
console.log(sailsIOClient);
console.log(io);
console.log(io.socket._raw);
console.log(io.sails);
Danke, und ich werde versuchen, dies zur Klärung bei Bedarf zu aktualisieren.
UPDATE:
Misc Server Info.:
- Ich bin mit nginx auf Port 443 mit SSL-Terminierung, bis 4 zeigen (und bald mehr) sails.js Instanzen auf separaten Ports (3000-3003).
- Ich verwende Redis auch für Sitzungen und Sockets.
Ich habe noch eine Lösung zu finden. Es wäre schön zu wissen, ob noch jemand in diese Sache geraten ist. – nodnarB
Warum machen Sie 'io.socket.disconnect();'? – Bulkin
Ich kämpfe auch damit, und ich kann scheinen, eine Lösung zu finden. Ich möchte mit einer json Nachricht an den Server senden und Ereignis. nodnarB konntest du einen Workaround finden? – zabumba