mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-26 12:41:40 +00:00
add proper turn server support
This commit is contained in:
parent
bc428260fa
commit
ef8c54c195
2 changed files with 38 additions and 8 deletions
|
|
@ -25,7 +25,7 @@ class MasterServerClient {
|
||||||
#if js
|
#if js
|
||||||
static var serverIp = "wss://mbpmaster.randomityguy.me:8443";
|
static var serverIp = "wss://mbpmaster.randomityguy.me:8443";
|
||||||
#else
|
#else
|
||||||
static var serverIp = "ws://89.58.58.191:8084";
|
static var serverIp = "ws://51.75.65.148:8084";
|
||||||
#end
|
#end
|
||||||
public static var instance:MasterServerClient;
|
public static var instance:MasterServerClient;
|
||||||
|
|
||||||
|
|
@ -194,6 +194,14 @@ class MasterServerClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function requestTurnCredentials() {
|
||||||
|
if (instance != null && instance.open) {
|
||||||
|
instance.queueMessage(Json.stringify({
|
||||||
|
type: "turn_credentials"
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function queueMessage(m:String) {
|
function queueMessage(m:String) {
|
||||||
#if hl
|
#if hl
|
||||||
toSend.add(m);
|
toSend.add(m);
|
||||||
|
|
@ -306,8 +314,11 @@ class MasterServerClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (conts.type == "turnserver") {
|
if (conts.type == "turn_credentials") {
|
||||||
Net.turnServer = conts.server; // Turn server!
|
Net.turnServers = conts.turn_servers;
|
||||||
|
if (@:privateAccess Net.onTurnServersReceived != null) {
|
||||||
|
@:privateAccess Net.onTurnServersReceived();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,9 @@ class Net {
|
||||||
|
|
||||||
static var stunServers = ["stun:stun.l.google.com:19302"];
|
static var stunServers = ["stun:stun.l.google.com:19302"];
|
||||||
|
|
||||||
public static var turnServer:String = "";
|
public static var turnServers:Array<String> = [];
|
||||||
|
|
||||||
|
static var onTurnServersReceived:Null<() -> Void> = null;
|
||||||
|
|
||||||
public static function hostServer(name:String, description:String, maxPlayers:Int, password:String, onHosted:() -> Void) {
|
public static function hostServer(name:String, description:String, maxPlayers:Int, password:String, onHosted:() -> Void) {
|
||||||
serverInfo = new ServerInfo(name, Settings.highscoreName, description, 1, maxPlayers, password, "LOBBY", getPlatform());
|
serverInfo = new ServerInfo(name, Settings.highscoreName, description, 1, maxPlayers, password, "LOBBY", getPlatform());
|
||||||
|
|
@ -128,8 +130,16 @@ class Net {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function addClientFromSdp(sdpString:String, onFinishSdp:String->Void) {
|
public static function addClientFromSdp(sdpString:String, onFinishSdp:String->Void, turnTried:Bool = false) {
|
||||||
var peer = new RTCPeerConnection(stunServers, "0.0.0.0");
|
if (Net.turnServers.length == 0 && !turnTried) {
|
||||||
|
MasterServerClient.requestTurnCredentials();
|
||||||
|
Net.onTurnServersReceived = () -> {
|
||||||
|
Net.onTurnServersReceived = null;
|
||||||
|
addClientFromSdp(sdpString, onFinishSdp, true);
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var peer = new RTCPeerConnection(stunServers.concat(Net.turnServers), "0.0.0.0");
|
||||||
var sdpObj = Json.parse(sdpString);
|
var sdpObj = Json.parse(sdpString);
|
||||||
peer.setRemoteDescription(sdpObj.sdp, sdpObj.type);
|
peer.setRemoteDescription(sdpObj.sdp, sdpObj.type);
|
||||||
addClient(peer, onFinishSdp);
|
addClient(peer, onFinishSdp);
|
||||||
|
|
@ -212,9 +222,18 @@ class Net {
|
||||||
clientIdMap[id] = ghost;
|
clientIdMap[id] = ghost;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function joinServer(serverName:String, password:String, connectedCb:() -> Void) {
|
public static function joinServer(serverName:String, password:String, connectedCb:() -> Void, turnTried:Bool = false) {
|
||||||
MasterServerClient.connectToMasterServer(() -> {
|
MasterServerClient.connectToMasterServer(() -> {
|
||||||
client = new RTCPeerConnection(stunServers, "0.0.0.0");
|
if (Net.turnServers.length == 0 && !turnTried) {
|
||||||
|
MasterServerClient.requestTurnCredentials();
|
||||||
|
Net.onTurnServersReceived = () -> {
|
||||||
|
Net.onTurnServersReceived = null;
|
||||||
|
joinServer(serverName, password, connectedCb, true);
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
client = new RTCPeerConnection(stunServers.concat(Net.turnServers), "0.0.0.0");
|
||||||
var candidates = [];
|
var candidates = [];
|
||||||
|
|
||||||
var closing = false;
|
var closing = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue