[HttpGet("sub")]
public async Task Subscribe() {
if (HttpContext.WebSockets.IsWebSocketRequest) {
using WebSocket ws = await HttpContext.WebSockets.AcceptWebSocketAsync();
string key = _socketManagerService.AddSocket(ws);
await _socketManagerService.SendAsync(
key, new WebSocketMessage{
MessageType = MessageType.ConnectionEvent,
Data = new WebSocketMessageData{
Topic = "Connection",
Payload = $"Connection established {DateTime.UtcNow}"}});
_logger.LogInformation($"New connection: {key} - {DateTime.UtcNow}");
while (ws.State == WebSocketState.Open) {
}
await _socketManagerService.RemoveSocketAsync(key);
_logger.LogInformation($"Connection closed {key} - {DateTime.UtcNow}");
// var socketFinishedTcs = new TaskCompletionSource<object>();
// await socketFinishedTcs.Task;
} else {
throw new BadRequestException("Only web socket connections");
}
}
[HttpGet("sub")]
public async Task Subscribe() {
if (HttpContext.WebSockets.IsWebSocketRequest) {
using WebSocket ws = await HttpContext.WebSockets.AcceptWebSocketAsync();
string key = _socketManagerService.AddSocket(ws);
await _socketManagerService.SendAsync(
key, new WebSocketMessage{
MessageType = MessageType.ConnectionEvent,
Data = new WebSocketMessageData{
Topic = "Connection",
Payload = $"Connection established {DateTime.UtcNow}"}});
_logger.LogInformation($"New connection: {key} - {DateTime.UtcNow}");
while (ws.State == WebSocketState.Open) {
}
await _socketManagerService.RemoveSocketAsync(key);
_logger.LogInformation($"Connection closed {key} - {DateTime.UtcNow}");
// var socketFinishedTcs = new TaskCompletionSource<object>();
// await socketFinishedTcs.Task;
} else {
throw new BadRequestException("Only web socket connections");
}
}