Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从服务器到客户端的信号流_C#_Asp.net Core_Stream_Signalr - Fatal编程技术网

C# 从服务器到客户端的信号流

C# 从服务器到客户端的信号流,c#,asp.net-core,stream,signalr,C#,Asp.net Core,Stream,Signalr,我无法让我的服务器使用Signal将数据流传输到客户端。流只获得1个值,在本例中为0,然后返回到javascript完全回调方法。需要一些帮助来找出它为什么不起作用。以下是Hub代码和JS代码: public class ChatHub : Hub { private Channel<double> channel = Channel.CreateUnbounded<double>(); public async IAsyncEn

我无法让我的服务器使用Signal将数据流传输到客户端。流只获得1个值,在本例中为0,然后返回到javascript完全回调方法。需要一些帮助来找出它为什么不起作用。以下是Hub代码和JS代码:

public class ChatHub : Hub
    {
        private Channel<double> channel = Channel.CreateUnbounded<double>();

        public async IAsyncEnumerable<double> GetData(CancellationToken cancellationToken)
        {
            while (await channel.Reader.WaitToReadAsync())
            {
                while (channel.Reader.TryRead(out var item))
                {
                    yield return item;
                }
            }
        }

        public async Task PublishData(IAsyncEnumerable<double> data)
        {
            await foreach (var point in data)
            {
                await channel.Writer.WriteAsync(point);
            }
        }
    }


我找到了答案,创建了一个服务类singleton,并在其中添加了频道。然后,我从集线器调用了singleton类,以便获得服务器和客户机之间通道的相同实例

(async () => {

        const latestNumber = 0;
        const connection = new signalR.HubConnectionBuilder()
            .withUrl("/chatHub")
            .build();

        await connection.start();

        connection.stream("GetData")
            .subscribe({
                next: (item) => {
                    var li = document.createElement("li");
                    li.textContent = item;
                    document.getElementById("messagesList").appendChild(li);
                },
                complete: () => {
                    var li = document.createElement("li");
                    li.textContent = "Stream completed";
                    document.getElementById("messagesList").appendChild(li);
                },
                error: (err) => {
                    var li = document.createElement("li");
                    li.textContent = err;
                    document.getElementById("messagesList").appendChild(li);
                },
            });

        console.log(latestNumber);

    })();