そこで、Haxe NME (HTML5 target ofc) を使用して単純な websocket クライアントの実装を構築しました。
につながります
ws://echo.websocket.org (sorry no link, SO sees this as an invalid domain)
これは完璧に機能します!(私はxirsys_stdjs haxelib を使用して HTML5 websocket を使用しています。)
ローカル (自分のマシン上) で websocket serverを実行したい。より簡単でシンプルなソリューションが見つからないため、現在 Socket.io を使用しています。
現在、socket.io をソケット サーバーとして使用しようとしていますが、socket.io ライブラリ clientside を使用せずに、「標準」の JavaScript ソケット実装をクライアント(Haxe HTML5)として使用しています。
これが可能かどうかは誰にもわかりますか?私はそれを機能させることができないからです。これが私の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.");
});
});
そして、これが私のHaxe(クライアント)コードです:
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.");
}
}
Haxe コードが不明な場合: webSocket 実装に 2 つの extern クラスを使用しています: MozWebSocket と WebSocket。これらは、対応する JavaScript クラスの型付けされた「インターフェース」です。