2012-05-14 21 views
6

Así que he creado una implementación simple de cliente websocket utilizando Haxe NME (HTML5 target ofc).
Se conecta aSocket.io como servidor, javascript 'estándar' como cliente?

ws://echo.websocket.org (sorry no link, SO sees this as an invalid domain) 

que funciona perfectamente! (estoy usando xirsys_stdjs haxelib a utilizar el material WebSocket HTML5.)

Quiero tener un local (en mi propia máquina) que se ejecuta el servidor WebSocket . Estoy usando Socket.io por el momento, porque no puedo encontrar una solución más fácil/más simple.

Actualmente estoy tratando de usar socket.io como servidor de socket, sino un 'estándar' javascript aplicación toma como cliente (Haxe HTML5), sin utilizar la biblioteca del lado del cliente socket.io.

¿Alguien sabe si esto debería ser posible? porque no puedo hacer que funcione. Aquí está mi código socket.io:

var app = require('http').createServer(handler) 
    , io = require('socket.io').listen(app) 
    , fs = require('fs') 

app.listen(1337); 

function handler (req, res) { 
    fs.readFile(__dirname + '/client.html', 
    function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading index.html'); 
    } 

    res.writeHead(200); 
    res.end(data); 
    }); 
} 

// WEBSOCKET IMPLEMENTATION 

io.sockets.on('connection', function (socket) { 

    console.log("webSocket connected..."); 

    socket.on('message', function() { 
     console.log("server recieved something"); 
     // TODO: find out how to access data recieved. 
     // probably 'msg' parameter, omitted in example? 
    }); 

    socket.on('disconnect', function() { 
     console.log("webSocket disconnected."); 
    }); 

}); 

Y aquí es mi Haxe (cliente) Código:

static var webSocketEndPoint:String = "ws://echo.websocket.org"; 
//static var webSocketEndPoint:String = "ws://localhost:1337"; 

... 

private function initializeWebSocket():Void { 
    if (untyped __js__('"MozWebSocket" in window')) { 
     websocket = new MozWebSocket(webSocketEndPoint); 
     trace("websocket endpoint: " + webSocketEndPoint); 
    } else { 
     websocket = new WebSocket(webSocketEndPoint); 
    } 

    // add websocket JS events 

    websocket.onopen = function (event:Dynamic):Void { 
     jeash.Lib.trace("websocket opened..."); 
     websocket.send("hello HaXe WebSocket!"); 
    } 

    websocket.onerror = function (event:Dynamic):Void { 
     jeash.Lib.trace("websocket erred... " + event.data); 
    } 

    websocket.onmessage = function (event:Dynamic):Void { 
     jeash.Lib.trace("recieved message: " + event.data); 
     switchDataRecieved(event.data); 
    } 

    websocket.onclose = function (event:Dynamic):Void { 
     jeash.Lib.trace("websocket closed."); 
    } 
} 

En caso de que el código de Haxe es claro: es el uso de 2 clases grabadores externos para la ejecución de WebSocket: MozWebSocket y WebSocket. Estas son solo 'interfaces' tipadas para las clases de JavaScript correspondientes.

Respuesta

-2

http://socket.io/#how-to-use En el enlace mencionado, hacia abajo, hacia la parte inferior de la página, la documentación socket.io demuestra, ya que es la última ejemplo, cómo utilizar su módulo como un servidor de Xbrowser WebSocket simple y llano.

SERVIDOR

var io = require('socket.io').listen(80); 

io.sockets.on('connection', function (socket) 
{ 
    socket.on('message', function() { }); 
    socket.on('disconnect', function() { }); 
}); 

NAVEGADOR

<script> 
var socket= io.connect('http://localhost/'); 
    socket.on('connect', function() 
      { 
    socket.send('hi'); 
    socket.on('message', function (msg) 
      {  // my msg 
      }); 
      }); 
</script> 

Esperanza eso es lo que busca

--Doc

+1

Hola doc, gracias, pero eso no era lo que estaba buscando. Estoy buscando un javascript predeterminado (sin usar 'io.connect' que viene del archivo socket.io javascript del cliente) implementación. esto es porque estoy usando socket.io como reemplazo para la implementación de mi servidor arduino websocket. por lo tanto, no puedo confiar en Javascript de socket.io. ¿Esto aclara mi pregunta? ¡Gracias! –

+0

Veo de lo que está hablando con suerte alguien contestará pronto. - Básicamente, en lugar de pensar en términos de su código haxe, puede hablar más de hablar entre un servidor socket.io y nativo html5 javascript WebSocket (var socket = new WebSocket ('ws: // localhost');) – Jordan

4

websocket.io! de los mismos tipos. muestra presenta exactamente la misma cosa que usted está planteando ... y algo que pasé allá de 20 horas en busca de

https://github.com/LearnBoost/websocket.io

Update (y finalmente encontré!): Jan 2014

El websocket.io repositorio no ha visto ninguna actividad durante aproximadamente 2 años. Podría ser porque es estable, o podría ser porque está abandonado.

Las mismas personas tienen otro repositorio llamado engine.io. En el archivo léame dicen que esto es isomorfo con websocket.io ... Parece que engine.io es donde está toda la acción en estos días.

https://github.com/LearnBoost/engine.io

+0

bien , maldición, eso hubiera sido útil para mí hace un año :) ¡Aunque, amable de su parte publicarlo! ¡Puede ayudar a las personas que buscan lo mismo! Además, es bueno que hayan implementado soporte para una amplia gama de especificaciones de websocket. Descubrí que diferentes implementaciones de especificaciones pueden ser un verdadero PITA. –

+0

Esperando esto, pero parece abandonado:/ – span

+1

@span no hay actualizaciones podría significar abandonado, o podría significar completado :) –

Cuestiones relacionadas