2012-05-14 43 views
6

Vì vậy, tôi đã xây dựng một khách hàng thực hiện websocket đơn giản bằng cách sử dụng Haxe NME (mục tiêu của HTML5).
Nó kết nối vớiSocket.io là máy chủ, javascript 'chuẩn' là ứng dụng khách?

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

mà hoạt động hoàn hảo! (Tôi đang sử dụng xirsys_stdjs haxelib sử dụng WebSocket thứ HTML5.)

Tôi muốn có một địa phương (trên máy tính của riêng tôi) chạy WebSocket máy chủ. Tôi đang sử dụng Socket.io tại thời điểm này, bởi vì tôi không thể tìm thấy một giải pháp dễ dàng/đơn giản hơn để đi với.

Tôi hiện đang cố gắng sử dụng socket.io như máy chủ ổ cắm, nhưng một 'tiêu chuẩn' javascript ổ cắm thực hiện như client (haXe HTML5), mà không sử dụng clientside socket.io thư viện.

Có ai biết liệu điều này có khả thi không? bởi vì tôi không thể làm cho nó hoạt động được. Đây là mã socket.io tôi:

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."); 
    }); 

}); 

Và đây là haXe tôi (client) mã:

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."); 
    } 
} 

Trong trường hợp mã haXe không rõ ràng: đó là sử dụng 2 lớp bên ngoài cho việc thực hiện WebSocket: MozWebSocket và WebSocket. Đây chỉ là gõ 'giao diện' cho các lớp JavaScript tương ứng.

Trả lời

-2

http://socket.io/#how-to-use Vào liên kết đã đề cập, xuống phía dưới cùng của trang, tài liệu socket.io chứng minh vì nó là cuối cùng dụ, làm thế nào để sử dụng mô-đun của họ như là một đồng bằng cũ máy chủ giữa các trình duyệt WebSocket.

MÁY CHỦ

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> 

Hope đó là những gì bạn đang tìm kiếm

--Doc

+1

Hey doc, cảm ơn, nhưng đó không phải là những gì tôi đang tìm kiếm. Tôi đang tìm một javascript mặc định (mà không cần sử dụng 'io.connect' mà đến từ các tập tin javascript socket.io clientide) implementantion. điều này là bởi vì tôi đang sử dụng socket.io như là thay thế cho arduino websocket Server của tôi thực hiện. do đó, tôi không thể dựa vào javascript socket.io clientside. điều này có làm sáng tỏ câu hỏi của tôi không? Cảm ơn! –

+0

Tôi thấy những gì bạn đang nói về hy vọng ai đó sẽ sớm trả lời. - Về cơ bản, thay vì suy nghĩ về mã haxe của bạn, bạn có thể nói nhiều hơn về nói chuyện giữa một máy chủ socket.io và html5 javascript WebSocket bản địa (var socket = new WebSocket ('ws: // localhost');) – Jordan

4

websocket.io! từ cùng một kẻ. mẫu cho thấy điều tương tự chính xác mà bạn đang hỏi về ... và một cái gì đó mà tôi đã trải qua trong quá khứ 20 giờ tìm kiếm

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

Cập nhật (và cuối cùng tìm thấy!): Jan 2014

Các websocket.io kho lưu trữ đã không thấy bất kỳ hoạt động nào trong khoảng 2 năm. Nó có thể là bởi vì nó ổn định, hoặc nó có thể là bởi vì nó bị bỏ rơi.

Cùng một người có một kho lưu trữ khác có tên engine.io. Trong readme họ nói rằng đây là đẳng cấu với websocket.io ... Có vẻ như engine.io là nơi mà tất cả các hành động là những ngày này.

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

+0

well , damn, đó sẽ là tiện dụng cho tôi một năm trước :) Mặc dù, tốt đẹp của bạn để gửi nó! Có thể nó giúp mọi người tìm kiếm như vậy! Ngoài ra, tốt đẹp mà họ thực hiện hỗ trợ cho một mảng rộng các thông số kỹ thuật websocket. tôi thấy rằng các cài đặt chuyên biệt khác nhau có thể là một PITA thực. –

+0

Hy vọng điều này nhưng có vẻ bị bỏ qua:/ – span

+1

@span không có cập nhật nào có thể có nghĩa là bị bỏ rơi hoặc có thể có nghĩa là đã hoàn thành :) –

0

Trong khi tìm kiếm điều tương tự tôi chỉ tìm thấy https://github.com/einaros/ws/ và ví dụ máy chủ của nó làm việc cho tôi với đồng bằng tiền hiện tại của tôi client javascript.

Các vấn đề liên quan