Serwer: sails.js (0.11.x) jest serwerememitować zdarzenie z klientem gniazda node.js tO sails.js (0.11.x)
Klient: a node.js skrypt z [email protected] i [email protected]
Duże zdjęcie: Mam lub będę mieć farmę skryptów node.js, które łączą się z serwerem sails.js i wykona różne zadania.
Bezpośrednim celem: Chcę emitować zdarzenia podczas połączenia gniazda z klient-serwer> takich jak:
socket.emit('got_job', job.id);
Dlaczego? Jeśli jest to możliwe, mogę tworzyć różne procedury obsługi zdarzeń po stronie serwera w jednym kontrolerze (lub kontrolerze + usłudze) i utrzymywać mój kod w czystości, zarządzając zbiorem stanowych transakcji między punktami końcowymi klient/serwer w celu obsługi tej farmy skryptów.
Dokumentacja: To jest jak idzie o używaniu socket.io-client dla sails.js tego za żagli docs: https://github.com/balderdashy/sails.io.js?files=1#for-nodejs
nie mam dużo kodu do podzielenia inny niż to, co jest w tym linku ale będę go wkleić tutaj na wszelki wypadek:
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)
});
Co mam spojrzał na: mam wiercone w różnych poziomach tych obiektów, a ja nie mogę znaleźć niczego odsłoniętą w użyciu. I po prostu próbowanie io.socket.emit(), ponieważ nie istnieje. Ale io.socket.get() i io.socket.post() itp. Działają dobrze.
console.log(socketIOClient);
console.log(sailsIOClient);
console.log(io);
console.log(io.socket._raw);
console.log(io.sails);
Dzięki, a ja postaram się zaktualizować to w razie potrzeby, aby wyjaśnić.
UPDATE:
Rożne Server Info.:
- Używam nginx na porcie 443, z rozwiązania SSL, wskazując do 4 (i wkrótce więcej) sails.js wystąpień na oddzielnych portów (3000-3003).
- Używam również Redis do sesji i gniazd.
Jeszcze nie znalazłem rozwiązania. Byłoby miło wiedzieć, czy ktoś do tego nie doszedł. – nodnarB
Dlaczego tworzysz 'io.socket.disconnect();'? – Bulkin
Ja też mam z tym problemy i mogę znaleźć rozwiązanie. Chcę emitować i wydarzenie z wiadomością json na serwer. nodnarB byłeś w stanie znaleźć obejście? – zabumba