|
@@ -274,11 +274,11 @@ namespace EVCB_OCPP.WSServer
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- session.SessionClosed -= AppServer_SessionClosed;
|
|
|
- session.m_ReceiveData -= ReceivedMessageTimeLimited;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- WriteMachineLog(session, string.Format("CloseReason: {0}", closeReason), "Connection", "");
|
|
|
- RemoveClient(session);
|
|
|
+
|
|
|
+ RemoveClient(session, closeReason);
|
|
|
}
|
|
|
|
|
|
private void TryRemoveDuplicatedSession(WsClientData session)
|
|
@@ -286,8 +286,8 @@ namespace EVCB_OCPP.WSServer
|
|
|
if (clientDic.ContainsKey(session.ChargeBoxId))
|
|
|
{
|
|
|
var oldSession = clientDic[session.ChargeBoxId];
|
|
|
- WriteMachineLog(oldSession, "Duplicate Logins", "Connection", "");
|
|
|
- RemoveClient(oldSession);
|
|
|
+
|
|
|
+ RemoveClient(oldSession, "Duplicate Logins");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -614,65 +614,6 @@ namespace EVCB_OCPP.WSServer
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private async void AppServer_NewSessionConnected(WsClientData session)
|
|
|
- {
|
|
|
- logger.LogDebug(string.Format("{0} NewSessionConnected", session.Path));
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- bool isNotSupported = session.SecWebSocketProtocol.Contains("ocpp1.6") ? false : session.SecWebSocketProtocol.Contains("ocpp2.0") ? false : true;
|
|
|
- if (isNotSupported)
|
|
|
- {
|
|
|
-
|
|
|
- WriteMachineLog(session, string.Format("SecWebSocketProtocol:{0} NotSupported", session.SecWebSocketProtocol), "Connection", "");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (clientDic.ContainsKey(session.ChargeBoxId))
|
|
|
- {
|
|
|
- var oldSession = clientDic[session.ChargeBoxId];
|
|
|
- WriteMachineLog(oldSession, "Duplicate Logins", "Connection", "");
|
|
|
-
|
|
|
- RemoveClient(oldSession);
|
|
|
- }
|
|
|
- clientDic[session.ChargeBoxId] = session;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- session.m_ReceiveData += ReceivedMessageTimeLimited;
|
|
|
-
|
|
|
- WriteMachineLog(session, "NewSessionConnected", "Connection", "");
|
|
|
-
|
|
|
- using (var db = await maindbContextFactory.CreateDbContextAsync())
|
|
|
- {
|
|
|
- var machine = await db.Machine.Where(x => x.ChargeBoxId == session.ChargeBoxId).FirstOrDefaultAsync();
|
|
|
- if (machine != null)
|
|
|
- {
|
|
|
- machine.ConnectionType = session.UriScheme.Contains("wss") ? 2 : 1;
|
|
|
- await db.SaveChangesAsync();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- logger.LogError(string.Format("NewSessionConnected Ex: {0}", ex.ToString()));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
async private void ReceivedMessageTimeLimited(object sender, string rawdata)
|
|
|
{
|
|
|
if (sender is not WsClientData session)
|
|
@@ -707,7 +648,7 @@ namespace EVCB_OCPP.WSServer
|
|
|
if (session.ResetSecurityProfile)
|
|
|
{
|
|
|
logger.LogError(string.Format("[{0}] ChargeBoxId:{1} ResetSecurityProfile", DateTime.UtcNow, session.ChargeBoxId));
|
|
|
- RemoveClient(session);
|
|
|
+ RemoveClient(session, "ResetSecurityProfile");
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1460,7 +1401,7 @@ namespace EVCB_OCPP.WSServer
|
|
|
|
|
|
|
|
|
|
|
|
- internal async void RemoveClient(WsClientData session)
|
|
|
+ internal async void RemoveClient(WsClientData session, string reason)
|
|
|
{
|
|
|
if (session == null)
|
|
|
{
|
|
@@ -1468,7 +1409,9 @@ namespace EVCB_OCPP.WSServer
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(session.MachineId))
|
|
|
- logger.LogTrace("RemoveClient[" + session.ChargeBoxId + "]");
|
|
|
+ logger.LogTrace("RemoveClient[{0}]:{1}", session.ChargeBoxId, reason);
|
|
|
+
|
|
|
+ WriteMachineLog(session, string.Format("CloseReason: {0}", reason), "Connection", "");
|
|
|
|
|
|
|
|
|
|
|
@@ -1477,11 +1420,13 @@ namespace EVCB_OCPP.WSServer
|
|
|
RemoveClientDic(session);
|
|
|
try
|
|
|
{
|
|
|
+ session.SessionClosed -= AppServer_SessionClosed;
|
|
|
+ session.m_ReceiveData -= ReceivedMessageTimeLimited;
|
|
|
+
|
|
|
if (session.State == WebSocketState.Open)
|
|
|
{
|
|
|
await session.Close();
|
|
|
}
|
|
|
- session.m_ReceiveData -= ReceivedMessageTimeLimited;
|
|
|
|
|
|
|
|
|
}
|