Il server: sails.js (0.11.x) è il serveremettono un evento con il cliente presa node.js a sails.js (0.11.x)
Il cliente: A node.js script con [email protected] e [email protected]
Grande foto: ho, o avranno una fattoria di script Node.JS che si collegano al server sails.js e svolgerà vari compiti.
obiettivo immediato: voglio emettere un evento durante una connessione socket da client-> server, ad esempio:
socket.emit('got_job', job.id);
Perché? Se ciò è possibile, posso creare vari gestori di eventi sul lato server in un controller (o controller + servizio) e mantenere pulito il mio codice mentre gestisco un insieme di transazioni stateful tra endpoint client/server per supportare questo script farm.
La documentazione: Questo è come si va sull'utilizzo socket.io-client per sails.js questo per vele docs: https://github.com/balderdashy/sails.io.js?files=1#for-nodejs
Non ho molto codice per condividere diverso da quello che c'è in quel link, ma mi incollo qui solo nel caso in cui:
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)
});
quello che ho guardato in: ho forato in vari livelli di questi oggetti e io non riesco a trovare nulla esposti da usare. E semplicemente provando io.socket.emit() perché non esiste. Ma io.socket.get() e io.socket.post(), ecc. Funzionano bene.
console.log(socketIOClient);
console.log(sailsIOClient);
console.log(io);
console.log(io.socket._raw);
console.log(io.sails);
Grazie, e cercherò di aggiornare questo come necessario per chiarimenti.
UPDATE:
Varie Info Server.:
- sto usando nginx sulla porta 443, con terminazione SSL, che punta a 4 (e presto più) sails.js istanze su porte separate (3000-3003).
- Sto anche utilizzando Redis per sessioni e socket.
Devo ancora trovare una soluzione. Sarebbe bello sapere se qualcun altro si è imbattuto in questo. – nodnarB
Perché stai facendo 'io.socket.disconnect();'? – Bulkin
Anche io sto lottando con questo, e posso sembrare di trovare una soluzione. Voglio emettere ed evento con un messaggio json al server. nodnarB sei riuscito a trovare una soluzione alternativa? – zabumba