|
@@ -61,8 +61,6 @@ public class WebsocketService<T> : IWebsocketService where T: WsSession
|
|
|
|
|
|
public event EventHandler<T> NewSessionConnected;
|
|
|
|
|
|
- public event EventHandler<T> SessionClosed;
|
|
|
-
|
|
|
public async Task AddWebSocket(WebSocket webSocket, HttpContext context)
|
|
|
{
|
|
|
T data = Activator.CreateInstance<T>();
|
|
@@ -70,8 +68,8 @@ public class WebsocketService<T> : IWebsocketService where T: WsSession
|
|
|
data.Path = context?.Request?.Path;
|
|
|
data.UriScheme = context?.Request?.Scheme;
|
|
|
data.AuthHeader = context?.Request?.Headers?.Authorization;
|
|
|
- data.SessionID = context.Session.Id;
|
|
|
- data.Endpoint = context.GetEndpoint();
|
|
|
+ data.SessionID = context.TraceIdentifier;
|
|
|
+ data.Endpoint = null;
|
|
|
data.Origin = context.Request.Headers.Origin;
|
|
|
|
|
|
var validated = await ValidateHandshake(data);
|
|
@@ -100,6 +98,7 @@ public class WsSession
|
|
|
public string SessionID { get; set; }
|
|
|
public Endpoint Endpoint { get; internal set; }
|
|
|
public StringValues Origin { get; internal set; }
|
|
|
+ public DateTime LastActiveTime { get; set; }
|
|
|
|
|
|
|
|
|
public WebSocket _WebSocket { get; internal set; }
|
|
@@ -116,7 +115,7 @@ public class WsSession
|
|
|
|
|
|
public SemaphoreSlim EndConnSemaphore { get; } = new SemaphoreSlim(0);
|
|
|
|
|
|
- public event OCPPClientDataEventHandler<WsSession, String> m_ReceiveData;
|
|
|
+ //public event OCPPClientDataEventHandler<WsSession, String> m_ReceiveData;
|
|
|
|
|
|
public event EventHandler SessionClosed;
|
|
|
|
|
@@ -124,6 +123,7 @@ public class WsSession
|
|
|
|
|
|
private void Init(WebSocket webSocket)
|
|
|
{
|
|
|
+ _WebSocket = webSocket;
|
|
|
ReceiveLoopTask = StartReceivd(webSocket);
|
|
|
}
|
|
|
|
|
@@ -139,19 +139,26 @@ public class WsSession
|
|
|
break;
|
|
|
}
|
|
|
string received = Encoding.UTF8.GetString(buffer, 0, result.Count);
|
|
|
- m_ReceiveData?.Invoke(this, received);
|
|
|
+ //m_ReceiveData?.Invoke(this, received);
|
|
|
+ this.LastActiveTime = DateTime.UtcNow;
|
|
|
+ HandleReceivedData(received);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ internal virtual void HandleReceivedData(string data)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
internal void Send(string dataString)
|
|
|
{
|
|
|
var data = Encoding.UTF8.GetBytes(dataString);
|
|
|
- ClientWebSocket.SendAsync(data, WebSocketMessageType.Binary, endOfMessage: true, cancellationToken: default);
|
|
|
+ ClientWebSocket.SendAsync(data, WebSocketMessageType.Text, endOfMessage: true, cancellationToken: default);
|
|
|
}
|
|
|
|
|
|
internal void Send(byte[] data, int offset, int length)
|
|
|
{
|
|
|
- ClientWebSocket.SendAsync(data, WebSocketMessageType.Binary, endOfMessage: true, cancellationToken: default);
|
|
|
+ ClientWebSocket.SendAsync(data, WebSocketMessageType.Text, endOfMessage: true, cancellationToken: default);
|
|
|
}
|
|
|
|
|
|
internal void Close(CloseReason closeReason)
|