2012-05-14 4 views
6

Quindi ho realizzato un'implementazione semplice del client Websocket utilizzando HMEe NME (HTML5 target ofc).
Si collega aSocket.io come server, javascript "standard" come client?

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

che funziona perfettamente! (sto usando xirsys_stdjs haxelib di utilizzare la roba websocket HTML5.)

voglio avere un locale (sulla mia macchina) in esecuzione websocket server di. Attualmente sto usando Socket.io, perché non riesco a trovare una soluzione più semplice/semplice da usare.

Attualmente sto cercando di utilizzare socket.io come server socket, ma un 'standard' javascript implementazione presa come cliente (Haxe HTML5), senza utilizzare la clientside socket.io libreria.

Qualcuno sa se questo dovrebbe essere possibile? perché non riesco a farlo funzionare. Ecco il mio codice 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."); 
    }); 

}); 

Ed ecco la mia Haxe (client) Codice:

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."); 
    } 
} 

Se il codice Haxe è chiaro: è con 2 classi extern per l'attuazione WebSocket: MozWebSocket e WebSocket. Queste sono solo delle "interfacce" tipizzate per le corrispondenti classi JavaScript.

risposta

-2

http://socket.io/#how-to-use Al link accennato, verso il fondo della pagina, la documentazione socket.io dimostra come è ultima esempio, come usare il loro modulo come una pianura vecchio server Xbrowser websocket.

SERVER

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

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

BROWSER

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

La speranza è quello che la vostra ricerca di

--Doc

+1

Ciao dottore, grazie, ma non era quello che stavo cercando. Sto cercando un javascript predefinito (senza usare 'io.connect' che deriva dal file client.io javascript) implementazione. questo perché sto usando socket.io come sostituto per la mia implementazione del server websocket arduino. quindi, non posso fare affidamento su socket.io clientide javascript. questo chiarisce la mia domanda? Grazie! –

+0

Vedo di cosa stai parlando, si spera che qualcuno risponda presto. - Fondamentalmente, invece di pensare in termini di codice haxe, puoi parlare più di parlare tra un socket.io server e nativo HTML javascript WebSocket (var socket = new WebSocket ('ws: // localhost');) – Jordan

4

websocket.io! dagli stessi ragazzi. esempio mostra esattamente la stessa cosa che si sta chiedendo circa ... e qualcosa che ho trascorso passato 20 ore alla ricerca di

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

Update (e finalmente trovato!): Gen 2014

Il websocket.io repository non ha visto alcuna attività per circa 2 anni. Potrebbe essere perché è stabile, o potrebbe essere perché è abbandonato.

Le stesse persone hanno un altro repository chiamato engine.io. Nel readme si dice che questo è isomorfo con websocket.io ... Sembra che engine.io sia dove tutta l'azione è in questi giorni.

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

+0

pozzo , dannazione, sarebbe stato utile per me un anno fa :) Comunque, gentile da parte tua postarlo! Che aiuti le persone a cercare lo stesso! Inoltre, è interessante il fatto che abbiano implementato il supporto per una vasta gamma di specifiche websocket. ho scoperto che implementazioni di specifiche diverse possono essere una vera PITA. –

+0

Sperando in questo, ma sembra abbandonato:/ – span

+1

@span nessun aggiornamento potrebbe significare abbandonato, o potrebbe significare completato :) –