Log im Chat-Server hinzugefügt und Bug in der App gefixt, dass der die Kundennummer im User speichert.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{4E069DC0-8153-41E0-A89A-FC1916DF4A5F}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BeWoChatServer</RootNamespace>
|
||||
<AssemblyName>BeWoChatServer</AssemblyName>
|
||||
|
||||
@@ -33,6 +33,8 @@ namespace BeWoChatServer
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Starte Server");
|
||||
|
||||
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
|
||||
var server = new IPEndPoint(IPAddress.Any, 5000);
|
||||
@@ -60,6 +62,8 @@ namespace BeWoChatServer
|
||||
|
||||
clientList.Add(workerSocket, 0);
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Client hinzugefügt");
|
||||
|
||||
WaitForClientData(workerSocket, "", 0, 0);
|
||||
|
||||
serverSocket.BeginAccept(OnClientConnected, null);
|
||||
@@ -93,6 +97,8 @@ namespace BeWoChatServer
|
||||
{
|
||||
var dataPacket = (Packet) asyncResult.AsyncState;
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Empfange Nachricht");
|
||||
|
||||
try
|
||||
{
|
||||
var responseByteCount = dataPacket.Socket.EndReceive(asyncResult);
|
||||
@@ -113,6 +119,7 @@ namespace BeWoChatServer
|
||||
case DataIdentifier.Login:
|
||||
try
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Login von " + dataPacket.ClientName);
|
||||
Monitor.Enter(_Lock);
|
||||
|
||||
var endPoint = dataPacket.Socket.RemoteEndPoint;
|
||||
@@ -127,6 +134,7 @@ namespace BeWoChatServer
|
||||
|
||||
var notificationPacket = new Packet(dataPacket.Socket, dataPacket.ClientName, dataPacket.SenderPersonOid, 0) {DataIdentifier = DataIdentifier.StatusNotificationLogin, Tenant = dataPacket.Tenant};
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Benachrichtige die anderen angemeldeten Clients");
|
||||
foreach (var client in clientList.Where(w => !w.Value.Equals(dataPacket.SenderPersonOid)))
|
||||
{
|
||||
client.Key.Send(notificationPacket.GetDataStream());
|
||||
@@ -164,12 +172,15 @@ namespace BeWoChatServer
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Chat-Nachricht ist leer und sorgt dafür, dass der Client ausgeloggt wird");
|
||||
|
||||
Monitor.Enter(_Lock);
|
||||
|
||||
var notificationPacketLogout2 = new Packet(dataPacket.Socket, dataPacket.ClientName, dataPacket.SenderPersonOid, 0) {DataIdentifier = DataIdentifier.StatusNotificationLogout};
|
||||
|
||||
clientList.Remove(dataPacket.Socket);
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Leite Logout an die anderen Clients weiter");
|
||||
foreach(var client in clientList)
|
||||
{
|
||||
client.Key.Send(notificationPacketLogout2.GetDataStream());
|
||||
@@ -188,6 +199,8 @@ namespace BeWoChatServer
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Chat-Nachricht erhalten");
|
||||
|
||||
Monitor.Enter(_Lock);
|
||||
|
||||
DefaultHibernateSessionManager.CurrentTenant = dataPacket.Tenant;
|
||||
@@ -201,11 +214,13 @@ namespace BeWoChatServer
|
||||
InsUser = dataPacket.ClientName
|
||||
};
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Speichere die Chat-Nachricht in die Datenbank");
|
||||
DAOFactory.GenericDAO.Insert(chatMessage);
|
||||
|
||||
// Testweise die Id einfügen
|
||||
if(chatMessage.Oid != null)
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Chat-Nachricht erfolgreich mit Oid " + chatMessage.Oid.Value + " gespeichert");
|
||||
dataPacket.ServerseitigeOid = chatMessage.Oid.Value;
|
||||
}
|
||||
|
||||
@@ -215,6 +230,7 @@ namespace BeWoChatServer
|
||||
{
|
||||
var recipients = clientList.Where(w => w.Value.Equals(dataPacket.RecipientPersonOid));
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Leite die Chat-Nachricht an die Empfänger (Derselbe User angemeldet an verschiedenen Clients) weiter");
|
||||
foreach(var recipient in recipients)
|
||||
{
|
||||
recipient.Key.Send(dataPacket.GetDataStream());
|
||||
@@ -228,6 +244,7 @@ namespace BeWoChatServer
|
||||
DataIdentifier = DataIdentifier.MessageResponse
|
||||
};
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Sende Datenbank-Insert-Bestätigung an den Absender, damit die Nachricht später nicht doppelt auf den Client heruntergeladen wird");
|
||||
dataPacket.Socket.Send(packet.GetDataStream());
|
||||
}
|
||||
}
|
||||
@@ -244,6 +261,7 @@ namespace BeWoChatServer
|
||||
|
||||
var notificationPacketLogout = new Packet(dataPacket.Socket, dataPacket.ClientName, dataPacket.SenderPersonOid, 0) {DataIdentifier = DataIdentifier.StatusNotificationLogout};
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Sende Logout an alle anderen Clients");
|
||||
foreach (var client in clientList.Where(w => !w.Value.Equals(dataPacket.SenderPersonOid)))
|
||||
{
|
||||
client.Key.Send(notificationPacketLogout.GetDataStream());
|
||||
@@ -254,6 +272,8 @@ namespace BeWoChatServer
|
||||
case DataIdentifier.Team:
|
||||
try
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Team-Nachricht erhalten");
|
||||
|
||||
Monitor.Enter(_Lock);
|
||||
|
||||
DefaultHibernateSessionManager.CurrentTenant = dataPacket.Tenant;
|
||||
@@ -270,15 +290,18 @@ namespace BeWoChatServer
|
||||
|
||||
var team = DAOFactory.GenericDAO.LoadByID<Team>(dataPacket.RecipientPersonOid);
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Speichere Team-Nachricht in der Datenbank");
|
||||
DAOFactory.GenericDAO.Insert(chatMessage);
|
||||
|
||||
var personOids = team.MemberList.Select(s => s.Person.Oid.Value);
|
||||
|
||||
if (chatMessage.Oid != null)
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Team-Nachricht erfolgreich mit Oid " + chatMessage.Oid.Value + " gespeichert");
|
||||
dataPacket.ServerseitigeOid = chatMessage.Oid.Value;
|
||||
}
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Leite die Team-Nachricht an die Empfänger weiter");
|
||||
foreach(var recipient in clientList.Where(w => w.Value != dataPacket.SenderPersonOid && personOids.Contains(w.Value)))
|
||||
{
|
||||
recipient.Key.Send(dataPacket.GetDataStream());
|
||||
@@ -291,6 +314,7 @@ namespace BeWoChatServer
|
||||
DataIdentifier = DataIdentifier.MessageResponse
|
||||
};
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Sende Datenbank-Insert-Bestätigung an den Absender, damit die Nachricht später nicht doppelt auf den Client heruntergeladen wird");
|
||||
dataPacket.Socket.Send(packet.GetDataStream());
|
||||
}
|
||||
finally
|
||||
@@ -323,6 +347,8 @@ namespace BeWoChatServer
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(DateTime.Now + ": Ein Fehler ist aufgetreten oder die App ist abgestürzt. Der Client wird ausgeloggt");
|
||||
|
||||
var sender = dataPacket.Socket;
|
||||
|
||||
var notificationPacketLogout = new Packet(dataPacket.Socket, dataPacket.ClientName, dataPacket.SenderPersonOid, 0) { DataIdentifier = DataIdentifier.StatusNotificationLogout };
|
||||
@@ -335,6 +361,7 @@ namespace BeWoChatServer
|
||||
{
|
||||
clientList.Remove(sender);
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Leite Logout an die anderen Clients weiter");
|
||||
foreach(var client in clientList)
|
||||
{
|
||||
client.Key.Send(notificationPacketLogout.GetDataStream());
|
||||
@@ -356,6 +383,7 @@ namespace BeWoChatServer
|
||||
{
|
||||
var notificationPacket = new Packet(dataPacket.Socket, dataPacket.ClientName, dataPacket.SenderPersonOid, 0) { DataIdentifier = DataIdentifier.StatusNotificationLogout };
|
||||
|
||||
Console.WriteLine(DateTime.Now + ": Sende Statusänderung(" + dataIdentifier + ") an alle anderen Clients");
|
||||
foreach (var client in clientList.Where(w => w.Value != dataPacket.SenderPersonOid))
|
||||
{
|
||||
client.Key.Send(notificationPacket.GetDataStream());
|
||||
|
||||
Reference in New Issue
Block a user