36 lines
1002 B
C#
36 lines
1002 B
C#
using System.Threading.Tasks;
|
|
using FinlyticCore.Dtos.Bot;
|
|
using FinlyticCore.Dtos.Trading;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
namespace FinlyticBackend.Hubs;
|
|
|
|
public interface ITradeStreamClient
|
|
{
|
|
Task ReceiveTradeProposal(TradeProposalDto proposal);
|
|
Task ReceiveTradeUpdate(ActiveTradeDto trade);
|
|
Task ReceiveBotPositionUpdate(BotTradeOrderDto botOrder);
|
|
Task ReceivePortfolioSummary(AccountSummaryDto summary);
|
|
}
|
|
|
|
[Authorize]
|
|
public class TradeStreamHub : Hub<ITradeStreamClient>
|
|
{
|
|
public async Task JoinAssetGroup(string isin)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(isin))
|
|
{
|
|
await Groups.AddToGroupAsync(Context.ConnectionId, isin.Trim().ToUpperInvariant());
|
|
}
|
|
}
|
|
|
|
public async Task LeaveAssetGroup(string isin)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(isin))
|
|
{
|
|
await Groups.RemoveFromGroupAsync(Context.ConnectionId, isin.Trim().ToUpperInvariant());
|
|
}
|
|
}
|
|
}
|