首页 > 解决方案 > 无法使用 c# 订阅 WebSocket 上的特定频道

问题描述

我在 JavaScript 中有这种方式的 websocket 侦听器。

var connectionLostMessage = null;

    function websocketConnect() {
        var conn = new ab.Session('ws://abc.xyz.dd:8080?time=1627624930.3964',
            function () {
                clearTimeout(connectionLostMessage);
                connectionLostMessage = null;

                conn.subscribe('316627', function (topic, data) {
                    //some code to use data display
                });
            },
            function () {
                //When connection fails
                //Connection fail handling

                setTimeout(function () {
                    websocketConnect();
                }, 1000)
            },
            {'skipSubprotocolCheck': true}
        );
    }

    websocketConnect();

我想使用 c# 连接并订阅频道,如下行的 JavaScript 中所示。

conn.subscribe('316627', function (topic, data) {

我尝试过这种方式,但无法以上述方式订阅。

public async Task WebsocketClientTest()
{
    var url = new Uri("ws://abc.xyz.dd:8080");
    var exitEvent = new ManualResetEvent(false);

    using (var client = new WebsocketClient(url))
    {
        client.MessageReceived
            .Subscribe(msg => Console.WriteLine($"msg.Text: {msg.Text},  msg.MessageType: {msg.MessageType}"));
        
        await client.Start();
        exitEvent.WaitOne();
    }

    Console.ReadLine();
}

我需要在 .Net Core 中编写一个控制台应用程序。请建议任何与 .Net Core 3.1 兼容的帮助或第三方

非常感谢!

标签: c#websocket

解决方案


我按照jdweng在上述评论中提出的这种方式找到了解决方案。我做错的唯一一件事是发送消息的格式。我的问题在问题编辑后也缺少发送行。

client.Send($"[5, \"123456"]");

推荐阅读