【问题标题】:ispossible create websocket server connected to another websocket?是否可以创建连接到另一个 websocket 的 websocket 服务器?
【发布时间】:2021-03-07 16:28:41
【问题描述】:

我需要 WebSocket 代码来实现我的客户端的结构。我将为我的客户端创建 WebSocket 服务器,客户端从 ex:binance websocket 接收

只是连接到binance websocket的一部分需要实现。

ASP.NET Core 5 C#

private async Task Echo(HttpContext context, WebSocket webSocket)
{
    var buffer = new byte[1024 * 4];
    WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
    while (!result.CloseStatus.HasValue)
    {
        await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);

        result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
    }
    await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}

【问题讨论】:

  • 我们需要查看一个完全可重现的示例以及您遇到的错误
  • 这是我在 websocket 上设置基本发送消息的代码,只是我需要确保我们可以将 websocket 服务器连接到另一个服务器?我的客户收到主 websocket WS A > WS B > Client

标签: c# asp.net .net-core websocket


【解决方案1】:

我做过类似的事情。我创建了 2 个 WebSocket 服务器,一个充当另一个的代理。您可以检查一下,也许它对您有用,或者至少您可以在那里找到一些答案。有点乱,因为我是作为研究做的,所以请问您是否需要更多信息。

https://github.com/RenanDiaz/WebSockets

public override async Task OnConnected(WebSocket socket)
{
    await base.OnConnected(socket);
    if (_client == null)
    {
        _client = new ClientWebSocket();
        await _client.ConnectAsync(new Uri("ws://localhost:5001/chat"), CancellationToken.None);
        var thread = new Thread(new ThreadStart(ReceiveMessageFromAPIServer));
        thread.Start();
    }
}

private async void ReceiveMessageFromAPIServer()
{
    var buffer = new byte[1024 * 4];
    while (_client != null)
    {
        var result = await _client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
        if (result.MessageType == WebSocketMessageType.Close)
        {
            await _client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None);
            break;
        }
        var messageString = Encoding.UTF8.GetString(buffer, 0, result.Count);
        var message = JsonConvert.DeserializeObject<IncomingAPIServerMessage>(messageString);
        await SendMessageToAll(message);
    }
}

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2020-08-22
    • 2014-07-05
    相关资源
    最近更新 更多