【问题标题】:Create a client websocket based console app创建基于客户端 websocket 的控制台应用程序
【发布时间】:2021-01-17 12:34:45
【问题描述】:

目前我正在使用 REST 通过我的控制台应用程序使用来自外部服务/服务器的数据,但这不是很实时。

谁能提供一个非常基本的工作示例,说明如何将 .net 核心控制台应用程序连接到 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"))
            {

            }

        }
    }
}

但是new WebSocket("wss://echo.websocket.org")) 显示错误Cannot create an instance of the abstract type or interface 'WebSocket' [websocket]csharp(CS0144)

【问题讨论】:

标签: c# linux .net-core


【解决方案1】:

如果您想不使用任何库来解决问题,您将不得不与 .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)}");
}

【讨论】:

  • 你指的是什么“斗争”?你的代码对我来说看起来很简单(因此赞成)。
  • 使用:piesocket.com/websocket-tester 用于测试工作的 wss:// url。
【解决方案2】:

WebSocket类是.Net中的抽象类,不能实例化抽象类。

请看这个链接:WebSocket Class

这些资源仅供参考:

How To Use WebSockets In ASP.NET Core

Using WebSocket To Build Real-Time Application Via ASP.NET Core

ClientWebSocket example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 2021-01-27
    • 2017-11-27
    • 2017-08-21
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多