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