async void GetEdgeConnection() { mxi = new MobiledgeXIntegration(); await mxi.RegisterAndFindCloudlet(); udpSendPort = mxi.GetAppPort(LProto.L_PROTO_UDP).public_port; udpHost = mxi.GetHost(); Debug.Log("UDP HOST : " + udpHost); Debug.Log("UDP PORT : " + udpSendPort); SendUDPMessage("Hi, From a UDP Client to the UDP Server"); }
public async void MobiledgeXAPICalls() { gameManager.clog("RegisterClient NOT IMPLEMENTED"); return; gameManager.clog("FindCloudlet NOT IMPLEMENTED"); return; gameManager.clog("GetAppPort NOT IMPLEMENTED"); return; gameManager.clog("GetUrl NOT IMPLEMENTED"); return; // NetTest netTest = new NetTest(integration.matchingEngine); foreach (AppPort ap in integration.FindCloudletReply.ports) { gameManager.clog("Port: proto: " + ap.proto + ", prefix: " + ap.fqdn_prefix + ", path_prefix: " + ap.path_prefix + ", port: " + ap.public_port); NetTest.Site site; // We're looking for one of the TCP app ports: if (ap.proto == LProto.L_PROTO_TCP) { // Add to test targets. if (ap.path_prefix == "") { site = new NetTest.Site { host = integration.GetHost(ap), port = integration.GetPort(ap) }; site.testType = NetTest.TestType.CONNECT; } else { site = new NetTest.Site { L7Path = integration.GetUrl("", ap) }; site.testType = NetTest.TestType.CONNECT; } if (useAltServer) { site.host = host; } l7Path = site.L7Path; netTest.sites.Enqueue(site); } } netTest.doTest(true); }
public async void MobiledgeXAPICalls() { integration.UseWifiOnly(true); // RegisterAndFindCloudlet and VerifyLocation: FindCloudletReply findCloudletReply; try { gameManager.uiConsole.text = "Registering to DME: "; bool registeredAndFoundCloudlet = await integration.RegisterAndFindCloudlet(); if (!registeredAndFoundCloudlet) { gameManager.clog("Unable to register and find cloudlet"); return; } stopWatch.Start(); findCloudletReply = integration.FindCloudletReply; gameManager.clog("FindCloudletReply: status: " + findCloudletReply.status + ", fqdn: " + findCloudletReply.fqdn); // This might be inside a thread update loop. Re-register client and check periodically. // VerifyLocation will fail if verification is unavailable at the carrier. bool verifiedLocation = await integration.VerifyLocation(); // Decide what to do with location status. gameManager.clog("VerifiedLocation: " + verifiedLocation); } catch (RegisterClientException rce) { gameManager.clog("RegisterClientException: " + rce.Message + ". Make sure OrgName, AppName, and AppVers are correct."); return; } catch (FindCloudletException fce) { gameManager.clog("FindCloudletException: " + fce.Message + ". Make sure you have an app instance deployed to your region and carrier network"); return; } catch (DmeDnsException de) { // This app should fallback to public cloud, as the DME doesn't exist for your // SIM card + carrier. gameManager.clog("Cannot register to DME host: " + de.Message + ", Stack: " + de.StackTrace); if (de.InnerException != null) { gameManager.clog("Original Exception: " + de.InnerException.Message); } // Handle fallback to public cloud application server. return; } catch (Exception e) { gameManager.clog("Unexpected Exception: " + e.StackTrace); return; } // GetAppPort AppPort appPort; try { appPort = integration.GetAppPort(LProto.L_PROTO_TCP); } catch (AppPortException ape) { gameManager.clog("Unabled to get AppPort. AppPortException: " + ape.Message); return; } if (appPort == null) { gameManager.clog("GetAppPort returned null"); return; } // GetUrl try { edgeCloudletStr = integration.GetUrl("ws"); gameManager.clog("Found Cloudlet from DME result: [" + edgeCloudletStr + "]"); } catch (GetConnectionException gce) { gameManager.clog("Unabled to get url. GetConnectionException " + gce.Message); return; } // NetTest netTest = new NetTest(integration.matchingEngine); foreach (AppPort ap in findCloudletReply.ports) { gameManager.clog("Port: proto: " + ap.proto + ", prefix: " + ap.fqdn_prefix + ", path_prefix: " + ap.path_prefix + ", port: " + ap.public_port); NetTest.Site site; // We're looking for one of the TCP app ports: if (ap.proto == LProto.L_PROTO_TCP) { // Add to test targets. if (ap.path_prefix == "") { site = new NetTest.Site { host = integration.GetHost(ap), port = integration.GetPort(ap) }; site.testType = NetTest.TestType.CONNECT; } else { site = new NetTest.Site { L7Path = integration.GetUrl("", ap) }; site.testType = NetTest.TestType.CONNECT; } if (useAltServer) { site.host = host; } l7Path = site.L7Path; netTest.sites.Enqueue(site); } } netTest.doTest(true); }
void HandleWebSocketMessage(string message) { var msg = MessageWrapper.UnWrapMessage(message); switch (msg.type) { case "register": Register register = Messaging <Register> .Deserialize(message); gameSession.sessionId = register.sessionId; gameSession.playerId = register.playerId; EdgeMultiplayCallbacks.registerEvent(); break; case "notification": Notification notification = Messaging <Notification> .Deserialize(message); switch (notification.notificationText) { case "left-room": gameSession.roomId = ""; EdgeMultiplayCallbacks.leftRoom(); break; case "join-room-faliure": EdgeMultiplayCallbacks.joinRoomFaliure(); break; case "new-room-created-in-lobby": EdgeMultiplayCallbacks.newRoomCreatedInLobby(); break; } EdgeMultiplayCallbacks.notificationEvent(notification); break; case "roomsList": RoomsList roomsList = Messaging <RoomsList> .Deserialize(message); EdgeMultiplayCallbacks.roomsList(roomsList.rooms); break; case "roomCreated": RoomCreated roomCreated = Messaging <RoomCreated> .Deserialize(message); gameSession.roomId = roomCreated.room.roomId; EdgeMultiplayCallbacks.roomCreated(roomCreated.room); break; case "roomJoin": RoomJoin roomJoin = Messaging <RoomJoin> .Deserialize(message); gameSession.roomId = roomJoin.room.roomId; EdgeMultiplayCallbacks.roomJoin(roomJoin.room); break; case "playerJoinedRoom": PlayerJoinedRoom playerJoinedRoom = Messaging <PlayerJoinedRoom> .Deserialize(message); EdgeMultiplayCallbacks.playerRoomJoined(playerJoinedRoom.room); break; case "gameStart": GameStart gameStart = Messaging <GameStart> .Deserialize(message); gameSession.currentPlayers = gameStart.room.roomMembers.ToArray(); foreach (Player player in gameStart.room.roomMembers) { if (player.playerId == gameSession.playerId) { gameSession.playerIndex = player.playerIndex; } } CreatePlayers(gameSession.currentPlayers); gameStarted = true; EdgeMultiplayCallbacks.gameStart(); if (useLocalHostServer) { udpClient = new MobiledgeXUDPClient(hostIPAddress, defaultEdgeMultiplayServerUDPPort); } else { udpClient = new MobiledgeXUDPClient(integration.GetHost(), integration.GetAppPort(LProto.L_PROTO_UDP).public_port); } SendUDPMessage(new GamePlayEvent() { eventName = "Start" }); break; case "GamePlayEvent": GamePlayEvent gamePlayEvent = Messaging <GamePlayEvent> .Deserialize(message); switch (gamePlayEvent.eventName) { case "NewObservableCreated": CreateObserverableObject(gamePlayEvent); break; case "ObservableOwnershipChange": UpdateObserverOwnership(gamePlayEvent); break; default: ReflectEvent(gamePlayEvent); break; } break; case "memberLeft": RoomMemberLeft playerLeft = Messaging <RoomMemberLeft> .Deserialize(message); EdgeMultiplayCallbacks.playerLeft(playerLeft); break; default: Debug.LogError("Unknown WebSocket message arrived: " + msg.type + ", message: " + message); break; } }