簡體   English   中英

Socket.io作為服務器,'標准'javascript作為客戶端?

[英]Socket.io as server, 'standard' javascript as client?

所以我使用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 服務器 我現在正在使用Socket.io,因為我找不到更簡單/更簡單的解決方案。

我目前正在嘗試使用socket.io作為套接字服務器,但是使用“標准”javascript套接字實現作為客戶端 (Haxe HTML5), 而不使用socket.io庫clientside

有誰知道這是否應該可行? 因為我無法讓它發揮作用。 這是我的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個extern類用於webSocket實現:MozWebSocket和WebSocket。 這些只是相應JavaScript類的類型“接口”。

websocket.io! 來自同一個人。 示例顯示了您要問的完全相同的事情......以及我花了20多個小時搜索的內容(最終找到了!)

https://github.com/LearnBoost/websocket.io

更新:2014年1月

websocket.io存儲庫大約2年沒有看到任何活動。 這可能是因為它是穩定的,或者可能是因為它被拋棄了。

同一個人有另一個名為engine.io的存儲庫。 在自述文件中,他們說這與websocket.io是同構的...似乎engine.io是現在所有行動的地方。

https://github.com/LearnBoost/engine.io

在搜索同樣的東西時,我剛剛找到了https://github.com/einaros/ws/ ,它的服務器示例為我使用我已經存在的普通javascript客戶端。

http://socket.io/#how-to-use在上述鏈接中,向下到頁面底部,socket.io文檔演示了它的最后一個示例,如何將其模塊用作普通的舊xbrowser webSocket服務器。

服務器

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

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

BROWSER

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

希望這是你想要的

--Doc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM