2010-10-01 13 views

Respuesta

0

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.

+0

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

+0

@haijin: respondió a su comentario en mi respuesta –

+0

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

4

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

+0

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. –

+0

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

9

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.

https://github.com/sockjs/sockjs-client

Cuestiones relacionadas