Compare commits
2 Commits
b7f44b5215
...
2d82d60f9e
| Author | SHA1 | Date |
|---|---|---|
|
|
2d82d60f9e | |
|
|
c8472e0670 |
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "com.incobyte.lobbyclient",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.3",
|
||||
"displayName": "Game Lobby Client",
|
||||
"description": "Provides a client for the game lobvy server to list and join lobbies",
|
||||
"unity": "2022.3",
|
||||
|
|
|
|||
|
|
@ -358,12 +358,12 @@ namespace Lobbies
|
|||
var queryExternalPortAndIp = new QueryExternalPortAndIp() { LobbyClientId = connectionId };
|
||||
var len = queryExternalPortAndIp.Serialize(messageData);
|
||||
var ip = GetIPsByName(host!, true, false).First();
|
||||
|
||||
var tries = 0;
|
||||
do
|
||||
{
|
||||
sendUdpCallback(new IPEndPoint(ip, port), messageData, len);
|
||||
}
|
||||
while (!waitForExternalIp.WaitOne(100));
|
||||
while (!waitForExternalIp.WaitOne(100) && tries++ < 100);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,15 +16,36 @@ ConcurrentDictionary<Guid, List<int>> clientsWatchingGameId = new ConcurrentDict
|
|||
BufferRental bufferRental = new BufferRental(4096);
|
||||
|
||||
udpServer.QueryIpAndPort += (clientId, ip, port) =>
|
||||
{
|
||||
var messageData = bufferRental.Rent();
|
||||
var seenExternalIpAndPort = new SeenExternalIpAndPort() { Ip = ip, Port = port };
|
||||
var messageDataLength = seenExternalIpAndPort.Serialize(messageData);
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
Console.WriteLine($"{DateTime.Now}: [TcpServer] sending QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}");
|
||||
byte[]? messageData = null;
|
||||
|
||||
try
|
||||
{
|
||||
await tcpServer.Send(clientId, messageData, 0, messageDataLength);
|
||||
bufferRental.Return(messageData);
|
||||
});
|
||||
messageData = bufferRental.Rent();
|
||||
var seenExternalIpAndPort = new SeenExternalIpAndPort() { Ip = ip, Port = port };
|
||||
var messageDataLength = seenExternalIpAndPort.Serialize(messageData);
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await tcpServer.Send(clientId, messageData, 0, messageDataLength);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Console.WriteLine($"{DateTime.Now}: [TcpServer] error in QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}: {ex.ToString()}");
|
||||
}
|
||||
|
||||
bufferRental.Return(messageData);
|
||||
messageData = null;
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"{DateTime.Now}: [TcpServer] error in QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}: {ex.ToString()}");
|
||||
if (messageData != null)
|
||||
bufferRental.Return(messageData);
|
||||
}
|
||||
};
|
||||
|
||||
tcpServer.DataReceived += (clientId, dataLength, data) =>
|
||||
|
|
|
|||
|
|
@ -36,13 +36,19 @@ namespace LobbyServer
|
|||
var receiveResult = await serverSocket.ReceiveAsync(cancellationTokenSource.Token);
|
||||
if(receiveResult.Buffer.Length > 0)
|
||||
{
|
||||
Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received packet");
|
||||
Memory<byte> receivedData = new Memory<byte>(receiveResult.Buffer);
|
||||
switch (LobbyMessageIdentifier.ReadLobbyMessageIdentifier(receivedData.Span))
|
||||
var identifier = LobbyMessageIdentifier.ReadLobbyMessageIdentifier(receivedData.Span);
|
||||
switch (identifier)
|
||||
{
|
||||
case QueryExternalPortAndIp.TypeId:
|
||||
case QueryExternalPortAndIp.TypeId:
|
||||
var queryExternalPortAndIp = QueryExternalPortAndIp.Deserialize(receivedData.Span);
|
||||
Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received QueryExternalPortAndIp for lobby client id {queryExternalPortAndIp.LobbyClientId} from {receiveResult.RemoteEndPoint.Address.ToString()}:{receiveResult.RemoteEndPoint.Port}");
|
||||
QueryIpAndPort?.Invoke(queryExternalPortAndIp.LobbyClientId, receiveResult.RemoteEndPoint.Address.ToString(), receiveResult.RemoteEndPoint.Port);
|
||||
break;
|
||||
default:
|
||||
Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received unkown identifier {identifier}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue