osh*_*nen 7 c# linux .net-core
目前,我正在使用 REST 使用我的控制台应用程序使用来自外部服务/服务器的数据,但它不是很实时。
任何人都可以提供一个非常基本的工作示例,说明如何将 .net core 控制台应用程序连接到wss://echo.websocket.org?
我已经开始:
using System;
using System.Net.WebSockets;
namespace websocket
{
class Program
{
static void Main(string[] args)
{
using (var ws = new WebSocket("wss://echo.websocket.org"))
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但new WebSocket("wss://echo.websocket.org"))显示错误Cannot create an instance of the abstract type or interface 'WebSocket' [websocket]csharp(CS0144)
小智 15
如果您想不使用库来解决问题,您将不得不努力解决 .NET 的一些内部问题。
以下代码应该提供一个简单的工作解决方案......
public static async Task Main(string[] args)
{
CancellationTokenSource source = new CancellationTokenSource();
using (var ws = new ClientWebSocket())
{
await ws.ConnectAsync(new Uri("wss://echo.websocket.org"), CancellationToken.None);
byte[] buffer = new byte[256];
while (ws.State == WebSocketState.Open)
{
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
{
await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
}
else
{
HandleMessage(buffer, result.Count);
}
}
}
}
private static void HandleMessage(byte[] buffer, int count)
{
Console.WriteLine($"Received {BitConverter.ToString(buffer, 0, count)}");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13097 次 |
| 最近记录: |