6

そこで、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 クラスの型付けされた「インターフェース」です。

4

3 に答える 3

0

同じものを検索しているときに、https://github.com/einaros/ws/を見つけたところ、そのサーバーの例は、既存のプレーンな JavaScript クライアントで機能しました。

于 2014-05-02T15:56:32.743 に答える
-2

http://socket.io/#how-to-use 上記のリンクで、ページの下部にある、socket.ioのドキュメントは、最後の例として、モジュールを単純な古いxbrowserwebSocketサーバーとして使用する方法を示しています。 。

サーバ

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

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

ブラウザ

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

それがあなたが探しているものであることを願っています

--Doc

于 2012-05-14T16:33:57.160 に答える