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());
}
//});
}
}
}
分类:
.NET6
, .NET Standard
标签:
websocket
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构