Socket.io в качестве сервера, «стандартный» javascript в качестве клиента?

Итак, я построил простую реализацию клиента веб-сокета, используя Haxe NME (HTML5 target ofc ).
Он подключается к

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

, который отлично работает! (я использую xirsys_stdjshaxelib для работы с веб-сокетами HTML5.)

Я хочу иметь локальный (на моей собственной машине) работающий веб-сервер . В данный момент я использую Socket.io, потому что не могу найти более простое/более простое решение.

В настоящее время я пытаюсь использовать socket.io в качестве сервера сокетов, но «стандартную» реализацию сокета javascript как client(Haxe HTML5), без использования клиентской библиотеки socket.io.

Кто-нибудь знает, возможно ли это? потому что я не могу заставить его работать. Вот мой код 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 неясен: он использует 2 внешних класса для реализации webSocket: MozWebSocket и WebSocket. Это просто типизированные «интерфейсы» для соответствующих классов JavaScript.

6
задан Gama11 10 July 2017 в 19:55
поделиться