C# 如何连接WebSocket服务
提问
C# 如何连接WebSocket服务
回答
- 引入nuget WebSocketSharp
- 连接服务
using ActiveAlarmDemo.Models;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using WebSocketSharp;
namespace ActiveAlarmDemo.Services
{
internal class RecordSubPlanService : BackgroundService
{
private readonly swaggerClient _swaggerClient;
private readonly ActiveAlarmContext _activeAlarmContext;
public RecordSubPlanService(swaggerClient swaggerClient, ActiveAlarmContext activeAlarmContext)
{
_swaggerClient = swaggerClient;
_activeAlarmContext = activeAlarmContext;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await Task.Delay(10000);
Console.WriteLine("RecordSubPlanService");
var authentication = await _swaggerClient.AuthenticationAsync("client_credentials", "HLT2", "HLT2");
var eventid = await _swaggerClient.RequestEventSubscriptionAsync(authentication.Access_token, new EventSubscriptionRequest()
{
Equips = new List<string>() { "PLSDCluster.High_Voltage.Generators.GEN4" }
});
WebSocketSharp.WebSocket webSocket = new($@"ws://172.26.176.171:18100/subscriptions/events/{eventid.Id}"); // in this string, we will type URL of server we want to connect to
webSocket.OnMessage += OnWebSocketOnOnMessage!;
webSocket.Connect();//connection to server
Console.ReadLine();
}
public Task StopAsync(CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
async void OnWebSocketOnOnMessage(object viewer, MessageEventArgs a)
{
//await Task.Run(async () =>
//{
var result = JsonConvert.DeserializeObject<List<SoeQueryAlarm>>(a.Data);
if (result != null)
{
await _activeAlarmContext.SoeQueryAlarms.AddRangeAsync(result);
var c = await _activeAlarmContext.SaveChangesAsync();
Console.WriteLine("RecordSubPlanService..." + c.ToString());
}
//});
}
}
}

浙公网安备 33010602011771号