我试图创建一个机器人,用C#和ASP.Net Core2.2监听WebSocket网址。
但我是新来WebSocket区的。
我阅读了微软关于WebSocket和ClientWebSocket的文档来解决我的问题。但这对我没有帮助。
我的应用程序如何侦听外部WebSocket地址并对传入的消息做出反应?
我尝试了下面的代码,但得到“无法创建抽象类或接口‘WebSocket’的实例”。错误。
using (var ws = new WebSocket("wss://ws.example.com"))
{
ws.OnMessage += (sender, e) =>
Console.WriteLine("Message received" + e.Data);
ws.OnError += (sender, e) =>
Console.WriteLine("Error: " + e.Message);
ws.Connect();
Console.ReadKey(true);
}
发布于 2019-04-09 17:05:56
这在基本情况场景中应该是可行的。
public class Listener
{
public void StopListening()
{
this.src.Cancel();
}
private Task listenTask;
private CancellationTokenSource src=new CancellationTokenSource();
public Task Listen(string url)
{
listenTask = Task.Run(async () =>
{
try
{
byte[] buffer = new byte[1024];
await socket.ConnectAsync(new Uri(url), CancellationToken.None);
while (true)
{
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
string data = Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine(data);
}
}
catch (Exception ex)
{
//treat exception
}
},src.Token);
}
}
但是,如果您计划创建多个Listener
对象(在路由上打开sockets
的HttpController
的上下文中),那么情况就会改变。
https://stackoverflow.com/questions/55571667
复制相似问题