2012-05-14 13 views
6

Also habe ich eine einfache WebSocket-Client-Implementierung mit Haxe NME (HTML5 Target ofc) gebaut.
Es verbindet sich mitSocket.io als Server, 'Standard' Javascript als Client?

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

, die perfekt funktioniert! (ich verwende xirsys_stdjs haxelib die HTML5 WebSocket Sachen zu verwenden.)

ich eine lokale haben wollen (auf meinem eigenen Rechner) läuft websocket Server. Ich benutze derzeit Socket.io, weil ich keine einfachere/einfachere Lösung finden kann.

Ich bin derzeit versucht, als Socket-Server verwenden socket.io, sondern ein 'Standard' Javascript-Socket-Implementierung als Client (Haxe HTML5), ohne die socket.io Bibliothek client zu verwenden.

Weiß jemand, ob das möglich sein sollte? weil ich es nicht funktionieren kann. Hier ist mein socket.io Code:

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

}); 

Und hier ist meine Haxe (Client) Code:

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

Falls der Haxe Code ist unklar: Es ist mit 2 extern Klassen für die WebSocket Umsetzung: MozWebSocket und WebSocket. Dies sind nur typisierte "Interfaces" für die entsprechenden JavaScript-Klassen.

Antwort

-2

http://socket.io/#how-to-use Am Link erwähnt, nach unten zum unteren Rand der Seite, die socket.io Dokumentation zeigt, wie es zuletzt Beispiel ist, wie sie ihr Modul als einfache alten xbrowser WebSocket-Server zu verwenden.

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> 

Hoffnung, das ist es, was für

Ihr auf der Suche

--Doc

+1

Hey Doc, danke, aber das war nicht das, was ich gesucht habe. Ich bin auf der Suche nach einem Standard-Javascript (ohne Verwendung von 'io.connect', die von der clientside socket.io Javascript-Datei kommt) Implementierung. Das liegt daran, dass ich socket.io als Ersatz für meine arduino Websocket Server-Implementierung verwende. Daher kann ich mich nicht auf socket.io clientside javascript verlassen. Klärt das meine Frage? Vielen Dank! –

+0

Ich sehe, wovon du sprichst hoffentlich antwortet jemand bald. - Im Grunde, anstatt in Bezug auf Ihre haxe-Code zu denken, können Sie sprechen mehr sprechen zwischen einem socket.io Server und native HTML5 Javascript WebSocket (var socket = neuer WebSocket ('ws: // localhost');) – Jordan

4

websocket.io! von den gleichen Jungs. Beispiel zeigt genau die gleiche Sache, die Sie über fragen ... und etwas, das ich letzten 20 Stunden damit verbracht, die Suche nach

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

Update (und schließlich gefunden!) Jan 2014

Die websocket.io Repository hat seit ca. 2 Jahren keine Aktivität mehr gesehen. Es könnte sein, dass es stabil ist, oder weil es aufgegeben wurde.

Die gleichen Leute haben ein anderes Repository namens engine.io. In der Liesmich sagen sie, dass dies isomorph ist mit websocket.io ... Es scheint, dass engine.io ist, wo all die Aktion in diesen Tagen ist.

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

+0

gut , verdammt, das wäre vor einem Jahr für mich praktisch gewesen :) Trotzdem, nett von dir, es zu posten! Möge es Menschen helfen, die nach dem gleichen suchen! Auch, dass sie Unterstützung für eine Vielzahl von Websocket-Spezifikationen implementiert. Ich habe festgestellt, dass verschiedene Spec-Implementierungen eine echte PITA sein können. –

+0

In der Hoffnung, aber es sieht verlassen aus:/ – span

+1

@span keine Updates könnte bedeuten, aufgegeben, oder es könnte bedeuten, abgeschlossen :) –