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