【问题标题】:Blazor and SSE (Server-Sent Events)Blazor 和 SSE(服务器发送事件)
【发布时间】:2021-09-01 02:27:35
【问题描述】:

是否可以在 blazor 应用程序中实现使用服务器发送事件?还是有其他方法可以监听 API 的请求/响应?

<script>
    source = new EventSource('/Home/Messaggio');
    source.onopen = function (ddd) {
        console.log("aperta");
    };
    source.onerror = function (ddd) {
        console.log("errore");
        console.log(ddd.data);
        source.close();
    };

    source.onmessage = function (ddd) {
        $("#Messaggio").text(ddd.data);
        console.log(ddd.data);
    };
</script>

是在 javascript 代码中获取数据并将数据添加到 C# blazor 变量 List responseObject 的方法吗?

【问题讨论】:

    标签: blazor server-sent-events


    【解决方案1】:

    .Net(因此也是 Blazor)提供了一个名为 SignalR 的标准库,它抽象了主要的“双向通信技术”:长轮询、SSE、Websocket 等。这意味着您不需要处理 SSE、Websockets 等。只需使用SignalR

    更新:

    由于您的服务器不使用 SignalR,我建议您编写(或导入)Javascript SSE 客户端与服务器通信,然后使用JSInterop 将结果传递给您的 C# 代码。

    【讨论】:

    • 我的 blazor 应用程序连接到使用 SSE 的外部应用程序。是否可以通过服务器作为 SSE 发送的 signalR 事件接收?
    • @cadi2108 我认为没有直接在客户端使用 SignalR 的方法,因为服务器没有使用 SignalR 实现。您可以做的是,您可以尝试找到用 C# 编写的 SSE 客户端(我认为没有任何标准,有 third party libraries)。或者您可以在 javascript 中完成这项工作并使用 JSInterop 将数据传递给您的 C# 代码。
    • 谢谢,我使用了文章blazor-university.com/javascript-interop/… 中的信息,现在它正在工作。添加请作为关于 JSInterop 的第二个答案建议,我会将其标记为已接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多