forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
68
Kha/Backends/HTML5/kha/netsync/Network.hx
Normal file
68
Kha/Backends/HTML5/kha/netsync/Network.hx
Normal file
@ -0,0 +1,68 @@
|
||||
package kha.netsync;
|
||||
|
||||
import haxe.io.Bytes;
|
||||
import js.html.BinaryType;
|
||||
import js.html.WebSocket;
|
||||
|
||||
class Network {
|
||||
var socket: WebSocket;
|
||||
var open: Bool = false;
|
||||
|
||||
public function new(url: String, port: Int, errorCallback: Void->Void, closeCallback: Void->Void) {
|
||||
socket = new WebSocket("ws://" + url + ":" + port);
|
||||
socket.onerror = function(error) {
|
||||
trace("Network error.");
|
||||
errorCallback();
|
||||
}
|
||||
socket.binaryType = BinaryType.ARRAYBUFFER;
|
||||
socket.onopen = function() {
|
||||
open = true;
|
||||
};
|
||||
socket.onclose = function(event) {
|
||||
trace("Network connection closed. " + webSocketCloseReason(event.code) + " (" + event.reason + ").");
|
||||
closeCallback();
|
||||
}
|
||||
}
|
||||
|
||||
static function webSocketCloseReason(code: Int): String {
|
||||
switch (code) {
|
||||
case 1000:
|
||||
return "Normal Closure";
|
||||
case 1001:
|
||||
return "Going Away";
|
||||
case 1002:
|
||||
return "Protocol error";
|
||||
case 1003:
|
||||
return "Unsupported Data";
|
||||
case 1005:
|
||||
return "No Status Rcvd";
|
||||
case 1006:
|
||||
return "Abnormal Closure";
|
||||
case 1007:
|
||||
return "Invalid frame";
|
||||
case 1008:
|
||||
return "Policy Violation";
|
||||
case 1009:
|
||||
return "Message Too Big";
|
||||
case 1010:
|
||||
return "Mandatory Ext.";
|
||||
case 1011:
|
||||
return "Internal Server Error";
|
||||
case 1015:
|
||||
return "TLS handshake";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public function send(bytes: Bytes, mandatory: Bool): Void {
|
||||
if (open)
|
||||
socket.send(bytes.getData());
|
||||
}
|
||||
|
||||
public function listen(listener: Bytes->Void): Void {
|
||||
socket.onmessage = function(message) {
|
||||
listener(Bytes.ofData(message.data));
|
||||
};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user