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.
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! –
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