Socket.IO, ecc. Richiedono tutti l'uso del browser sul lato client. Mi chiedo solo, come possiamo avere client websocket senza browser per node.js?Esiste un client websocket senza browser per Node.js che non ha bisogno di utilizzare un browser?
risposta
Un server Node.js non è in alcun modo associato a un browser Web come client. Qualsiasi programma può utilizzare qualsiasi libreria di socket fornita dalle sue librerie di supporto per effettuare una chiamata a un server Node.js.
EDIT
In risposta al tuo commento: non dimenticate che è Node.js Javascript! Se si desidera eseguire periodicamente il codice, in modo analogo a un processo daemon, è possibile utilizzare setInterval per eseguire una richiamata ogni n millisecondi. Dovresti essere in grado di farlo proprio lì nel tuo programma di nodo.
Remy Sharp (@rem) ha scritto un'implementazione Socket.io-client che funziona sul server. Credo che questo è ciò che stai cercando: https://github.com/remy/Socket.io-node-client
Socket.io-node-client non è un'implementazione "websocket senza browser", è uno shim che abilita le comunicazioni client "browserless socket.io". ha chiesto espressamente "websocket senza browser". Socket.io-node-client utilizza l'implementazione WebSocket socket-client-test, che supporta solo la vecchia bozza WebSocket hixie 75/76; non (attualmente) emula l'oggetto WebSocket ora in uso dai browser moderni, quindi non è appropriato per l'uso come implementazione generale "websocket senza browser". né Socket.io-node-client né il WebSocket del test client di socket.io sono la scelta giusta. –
Non mi interessa le sfumature di "browserless websocket" rispetto a "browserless socket.io", voglio solo un modo semplice per comunicare tra due processi node.js e questo sembra adattarsi al progetto. – ColinM
raccomandazione attuale
Usa WebSocket-Node con il mio codice wrapper (vedi sotto). Al momento della stesura di questo documento, nessun altro progetto pubblico che conosca supporta la nuova specifica hybi, quindi se vuoi emulare le versioni attuali del browser, avrai bisogno di WebSocket-Node. Se vuoi emulare i browser più vecchi, come Safari mobile su iOS 4.2, avrai bisogno anche di una delle altre librerie elencate di seguito, ma dovrai gestire tu stesso le collisioni dei nomi oggetto "WebSocket".
Segue un elenco di implementazioni client WebSocket pubbliche per node.js.
Socket.IO implementazione WebSocket
Il socket.io client-test fa hixie progetto 75/76, ma a partire da questa scrittura, non hybi 7+.
https://github.com/LearnBoost/socket.io/blob/master/support/node-websocket-client/lib/websocket.js
mi sto chiedendo se intendono aggiornare hybi 7+: http://groups.google.com/group/socket_io/browse_thread/thread/d27320502109d0be
Node-websocket-client
"node-websocket-client" di Peter Griess fa hixie draft 75/76, ma al momento della stesura, non hybi 7+.
https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js
WebSocket-Node
di Brian McKelvey WebSocket-Node dispone di un'implementazione client per hybi 7-17 (versione del protocollo 7-13), ma l'implementazione non fornisce un browser stile Oggetto WebSocket.
https://github.com/Worlize/WebSocket-Node
Ecco il codice wrapper che uso per emulare l'oggetto del browser in stile WebSocket:
/**
* Wrapper for Worlize WebSocketNode to emulate the browser WebSocket object.
*/
var WebSocketClient = require('./WorlizeWebSocketNode/lib/websocket').client;
exports.WebSocket = function (uri) {
var self = this;
this.connection = null;
this.socket = new WebSocketClient();
this.socket.on('connect', function (connection) {
self.connection = connection;
connection.on('error', function (error) {
self.onerror();
});
connection.on('close', function() {
self.onclose();
});
connection.on('message', function (message) {
if (message.type === 'utf8') {
self.onmessage({data:message.utf8Data});
}
});
self.onopen();
});
this.socket.connect(uri);
}
exports.WebSocket.prototype.send = function (data) {
this.connection.sendUTF(data);
}
SockJS
Solo per riferimento, SockJS di Marek Majkowski non include un client nodo. La libreria client di SockJS è semplicemente un browser dom wrapper.
Avendo appena passati attraverso questo, devo raccomandare: https://github.com/Worlize/WebSocket-Node Grazie alla sua eccellente documentazione.
https://github.com/einaros/ws chiude un secondo.
Entrambi sono attivi e vengono mantenuti aggiornati in questo momento.
In questo momento (in ottobre 2012) il metodo consigliato per farlo sta usando una biblioteca socket.io-cliente, di cui dispone https://github.com/LearnBoost/socket.io-client
- 1. Libreria Websocket per browser?
- 2. Esiste un client WebSocket implementato per .NET?
- 3. Angolare, senza un browser?
- 4. Browser per le comunicazioni del browser senza un server?
- 5. Browser non sta spingendo per un certificato client
- 6. Come chiudere un browser su un server RC di selenio che ha perso il client
- 7. Esiste un emulatore Blackberry Browser?
- 8. Le websocket consentono la comunicazione p2p (da browser a browser)?
- 9. Verificare se un client certificat è installato nel browser client
- 10. Come utilizzare le macro nunjucks nel browser lato client?
- 11. Rilevamento ambiente: node.js o browser
- 12. Esiste un componente del browser Web da utilizzare nell'applicazione FireMonkey?
- 13. Come configurare Neo4j Browser per utilizzare un endpoint REST personalizzato?
- 14. C'è un IDE Javascript che non ha nulla a che fare con un browser?
- 15. Esiste un limite al numero di elementi html, che il browser può visualizzare senza problemi?
- 16. Modulo comune in node.js e browser javascript
- 17. Come inviare dati binari da un server socket.io Node.js a un client browser?
- 18. Esiste un modo per impedire che le pagine AJAX vengano visualizzate da sole in un browser?
- 19. Ruby client websocket per websocket-rails gem
- 20. webrtc senza browser
- 21. Esiste un modulo websocket Python 3 per server?
- 22. Temporizzazione Websocket: come ottenere l'ora esatta in cui un messaggio Websocket arriva al browser?
- 23. Vero browser senza testa
- 24. Esiste un editor autonomo per javascript basato su browser?
- 25. Esiste un limite di memoria per il browser Google Chrome?
- 26. Genera grafici senza HTML/Browser
- 27. Esiste un modo cross-browser per impostare style.float in Javascript?
- 28. Primavera di sicurezza: Abilita/Disabilita CSRF per tipo client (browser/non-browser)
- 29. Esiste un buon strumento "OCaml Browser" per Linux?
- 30. Chiudi browser senza prompt
Sì, ho assistente node.js esecuzione .... I voglio solo essere in grado di ottenere aggiornamenti in tempo reale sul mio client tramite websocket senza utilizzare il browser sul lato client ... in pratica, voglio che un processo daemon client ascolti il messaggio push in tempo reale dal mio server node.js. .. Sto usando il nodo anche dal lato client ... Tuttavia, non sono sicuro di come fare a processare il nodo un deamon .... il nodo non è bloccante .... mentre sto chiedendo al client di bloccare (while loop on sock.onmessage). – haijin
@haijin: risposto al tuo commento nella mia risposta –
Ho trovato il lib python websock che ha funzionato bene per il mio caso ... Buono. http://freeasinbeard.org/post/1008785379/python-websocket-a-websocket-client-library-for – haijin