[英]SignalR streaming from server to client
我無法讓我的服務器將 stream 數據發送到具有 SignalR 的客戶端。 stream 只獲取 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);
}
}
}
JS:
(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);
})();
我找到了答案,提供了服務 class singleton 並將頻道添加到其中。 然后我從集線器調用了 singleton class 所以我在服務器和客戶端之間獲得了相同的通道實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.