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