Compare commits

...

2 Commits

Author SHA1 Message Date
Thomas Woischnig 2d82d60f9e No more unlimted while 2023-12-31 00:12:30 +01:00
Thomas Woischnig c8472e0670 More logs 2023-12-30 23:48:04 +01:00
4 changed files with 40 additions and 13 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "com.incobyte.lobbyclient", "name": "com.incobyte.lobbyclient",
"version": "1.0.2", "version": "1.0.3",
"displayName": "Game Lobby Client", "displayName": "Game Lobby Client",
"description": "Provides a client for the game lobvy server to list and join lobbies", "description": "Provides a client for the game lobvy server to list and join lobbies",
"unity": "2022.3", "unity": "2022.3",

View File

@ -358,12 +358,12 @@ namespace Lobbies
var queryExternalPortAndIp = new QueryExternalPortAndIp() { LobbyClientId = connectionId }; var queryExternalPortAndIp = new QueryExternalPortAndIp() { LobbyClientId = connectionId };
var len = queryExternalPortAndIp.Serialize(messageData); var len = queryExternalPortAndIp.Serialize(messageData);
var ip = GetIPsByName(host!, true, false).First(); var ip = GetIPsByName(host!, true, false).First();
var tries = 0;
do do
{ {
sendUdpCallback(new IPEndPoint(ip, port), messageData, len); sendUdpCallback(new IPEndPoint(ip, port), messageData, len);
} }
while (!waitForExternalIp.WaitOne(100)); while (!waitForExternalIp.WaitOne(100) && tries++ < 100);
} }
catch catch
{ {

View File

@ -16,15 +16,36 @@ ConcurrentDictionary<Guid, List<int>> clientsWatchingGameId = new ConcurrentDict
BufferRental bufferRental = new BufferRental(4096); BufferRental bufferRental = new BufferRental(4096);
udpServer.QueryIpAndPort += (clientId, ip, port) => udpServer.QueryIpAndPort += (clientId, ip, port) =>
{ {
var messageData = bufferRental.Rent(); Console.WriteLine($"{DateTime.Now}: [TcpServer] sending QueryExternalPortAndIp result for lobby client id {clientId} with {ip}:{port}");
var seenExternalIpAndPort = new SeenExternalIpAndPort() { Ip = ip, Port = port }; byte[]? messageData = null;
var messageDataLength = seenExternalIpAndPort.Serialize(messageData);
_ = Task.Run(async () => try
{ {
await tcpServer.Send(clientId, messageData, 0, messageDataLength); messageData = bufferRental.Rent();
bufferRental.Return(messageData); 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) => tcpServer.DataReceived += (clientId, dataLength, data) =>

View File

@ -36,13 +36,19 @@ namespace LobbyServer
var receiveResult = await serverSocket.ReceiveAsync(cancellationTokenSource.Token); var receiveResult = await serverSocket.ReceiveAsync(cancellationTokenSource.Token);
if(receiveResult.Buffer.Length > 0) if(receiveResult.Buffer.Length > 0)
{ {
Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received packet");
Memory<byte> receivedData = new Memory<byte>(receiveResult.Buffer); 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); 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); QueryIpAndPort?.Invoke(queryExternalPortAndIp.LobbyClientId, receiveResult.RemoteEndPoint.Address.ToString(), receiveResult.RemoteEndPoint.Port);
break; break;
default:
Console.WriteLine($"{DateTime.Now}: [UdpCandidateServer] received unkown identifier {identifier}");
break;
} }
} }
} }