Socket.IO, etc. todos requieren el uso del navegador en el lado del cliente .... solo me pregunto, ¿cómo podemos tener un cliente de websocket sin navegador para node.js?¿Hay un cliente de websocket sin navegador para Node.js que no necesita usar un navegador?
Respuesta
Un servidor Node.js no está vinculado de ninguna manera con un navegador web como cliente. Cualquier programa puede usar cualquier biblioteca de socket proporcionada por sus bibliotecas de soporte para realizar una llamada a un servidor Node.js.
EDITAR
respuesta a su comentario: no se olvide que es Node.js Javascript! Si desea ejecutar el código de forma periódica, de forma muy similar a como lo haría un proceso daemon, puede usar setInterval para ejecutar una devolución de llamada cada n milisegundos. Debería poder hacerlo allí mismo en su programa de nodo.
Remy Sharp (@rem) escribió una implementación de Socket.io-client que funciona en el servidor. Creo que esto es lo que está buscando: https://github.com/remy/Socket.io-node-client
Socket.io-node-client no es una implementación de "websocket sin navegador", es un shim que habilita las comunicaciones del cliente "socketless sin navegador". él específicamente pidió "websocket sin navegador". Socket.io-node-client usa la implementación de WebSocket de prueba del cliente socket.io, que solo es compatible con el antiguo borrador de WebSocket hixie 75/76; no emula (actualmente) el objeto WebSocket que utilizan los navegadores modernos, por lo que no es apropiado para su uso como una implementación general de "websocket sin navegador". ni Socket.io-node-client ni el cliente-prueba WebSocket de socket.io son la elección correcta. –
No me importan los matices de "websocket sin navegador" versus "socket.io sin navegador", solo quiero una forma sencilla de comunicarse entre dos procesos node.js y esto parece ajustarse a la factura. – ColinM
recomendación actual
Uso WebSocket-nodo con mi código de contenedor (véase más adelante). Al momento de escribir esto, ningún otro proyecto público que conozco admite la nueva especificación de hybi, por lo que si desea emular las versiones actuales del navegador, necesitará WebSocket-Node. Si desea emular exploradores más antiguos, como Safari móvil en iOS 4.2, también necesitará una de las otras bibliotecas enumeradas a continuación, pero tendrá que administrar las colisiones de nombre de objeto "WebSocket" usted mismo.
A continuación, se incluye una lista de las implementaciones públicas del cliente WebSocket para node.js.
Socket.IO
La prueba cliente socket.io aplicación WebSocket hace hixie proyecto 75/76, pero a partir de este escrito, no hybi 7+.
https://github.com/LearnBoost/socket.io/blob/master/support/node-websocket-client/lib/websocket.js
estoy preguntando si tienen la intención de actualizar a hybi 7+: http://groups.google.com/group/socket_io/browse_thread/thread/d27320502109d0be
Nodo-WebSocket-Client
"nodo-WebSocket-cliente" de Peter Griess hace hixie draft 75/76, pero a partir de este escrito, no hybi 7+.
https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js
WebSocket-Nodo
WebSocket-Nodo de Brian McKelvey tiene una aplicación cliente para hybi 7-17 (versión del protocolo 7-13), pero la aplicación no proporciona un estilo de navegador Objeto WebSocket.
https://github.com/Worlize/WebSocket-Node
Aquí está el código de contenedor que utilizo para emular el objeto WebSocket de estilo navegador:
/**
* 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
Sólo como referencia, SockJS de Marek Majkowski lo hace no incluir un cliente de nodo. La biblioteca de cliente de SockJS es simplemente un contenedor dom de navegador.
Habiendo pasado por esto, tengo que recomendar: https://github.com/Worlize/WebSocket-Node Debido a su excelente documentación.
https://github.com/einaros/ws viene en segundo lugar.
Ambos están activos y se mantienen actualizados en este momento.
En este momento (en octubre de 2012) la forma recomendada para hacerlo es usando una biblioteca de la socket.io-cliente, que está disponible en https://github.com/LearnBoost/socket.io-client
- 1. ¿Hay un cliente Websocket del lado del servidor para node.js?
- 2. ¿Hay un cliente WebSocket implementado para .NET?
- 3. ¿Hay un cliente WebSocket implementado para python?
- 4. ¿Hay alguna buena razón para usar Websockets fuera del navegador?
- 5. ¿Hay un motor javaScript donde puedo ejecutar mi código sin tener que usar un navegador?
- 6. ¿Hay un emulador de navegador Blackberry?
- 7. ¿Comunicación del navegador al navegador sin un servidor?
- 8. ¿Usando el navegador sin cabeza Node.js con híbrido de selenio?
- 9. ¿Hay un IDE de Javascript que no tiene nada que ver con un navegador?
- 10. ¿Hay un navegador web basado en C#?
- 11. ¿Hay un cliente de Thrift o Cassandra para Node.js/JavaScript
- 12. Envío de WebSocket marco de ping/pong desde el navegador
- 13. Necesita datos simples para navegar usando node.js
- 14. Cliente de Websocket en Erlang
- 15. ¿Cómo ejecutar SWF sin un navegador (en un servidor Linux)?
- 16. ¿Necesita usar path.join en Node.js?
- 17. ¿Cliente WebDAV basado en navegador?
- 18. ¿Hay un navegador sin cabeza para .NET (para pruebas de interfaz de usuario web automatizadas)?
- 19. ¿Cómo puedo controlar un navegador (ala Selenium) con node.js?
- 20. Navegador sin cabeza real
- 21. Cómo cerrar un navegador en un servidor RC de selenio que perdió su cliente
- 22. ¿Cómo establecer una conexión TCP Socket desde un navegador web (lado del cliente)?
- 23. monitor solicitud HTTP de un navegador no
- 24. Prueba de selenio sin navegador
- 25. Cliente SSH para Node.js
- 26. Cliente Websocket en C++
- 27. Emulando un navegador web
- 28. navegador sin cabeza para C# (.NET)?
- 29. Servidor de chat con websocket + node.js versus un cliente nativo con xmpp
- 30. navegador
Sí, tengo servidor Node.js corriendo .... I solo quiero poder obtener actualizaciones en tiempo real en mi cliente a través de websocket sin usar el navegador en el lado del cliente ... básicamente, quiero tener un proceso de daemon de cliente escuchando en tiempo real el mensaje de inserción de mi servidor node.js. .. Estoy usando node en el lado del cliente también ... Sin embargo, no estoy seguro de cómo hacer que el nodo process sea un deamon ... el nodo no bloquea ... mientras que ahora estoy pidiendo al cliente que bloquee (while loop on sock.onmessage). – haijin
@haijin: respondió a su comentario en mi respuesta –
Encontré la lib websock python que funcionó bien para mi caso ... Bien. http://freeasinbeard.org/post/1008785379/python-websocket-a-websocket-client-library-for – haijin