【问题标题】:custom events with server sent events带有服务器发送事件的自定义事件
【发布时间】:2013-11-09 06:56:44
【问题描述】:

我正在尝试利用服务器发送的事件来处理一些异步操作的客户端,我正在做服务器端。滚动到底部以查看最后一个问题。

我有一个需要全局搜索的网络应用程序。返回可能很大并且需要一些时间,因为它们实际上被发送到 Web 服务,然后以 XML 的形式返回。

我正在尝试使用服务器发送的事件(javascript:EventSource)来启用它。它只适用于一个活动,但如果我想做一堆不同的活动,它会有点奇怪,至少对我来说是这样。我是 SSE 的新手。

到目前为止,我已经这样做了:

var sse = new EventSource('testsse.aspx');

function init() {
            sse.onopen = function (e) {
                console.log(e.data);
            };

            sse.onmessage = function (e) {
//if data has been returned the "data:" field will not be empty so we know the server operation is complete. 
                if (e.data.length>0) {
                    $('#rgCcr').kendoGrid({
                        dataSource: JSON.parse(e.data)
                    });
                    sse.close();
                }
                    console.log("message: " + e.data);
            };

$(document).ready(function() {
    init();
});

在服务器上,我有一个构建 json 字符串的 aspx 页面。正如我所提到的,如果我只使用标准的“数据:我的消息\n\n”格式,它就会很好地工作。我需要做的是在那里获取更多信息。

spec for SSE 表示您可以指定要触发的事件。到目前为止,我无法让它发挥作用。

在我的 aspx 中,我正在构建这样的字符串:

json = string.Format("id:{0}\n event:myEvent\n data:{1}\n\n", id, ser.Serialize(ccrData));

我已尝试创建自定义事件,但不确定将其绑定到什么才能捕获它。

在页面上,作为全局搜索的一部分,我正在搜索 5 个不同的区域。每个都在服务器上作为异步任务执行,完成后会将数据发送回客户端。一旦客户端检测到事件已提交数据,它将关闭侦听器并将数据结果添加到剑道网格中。

如何使用 SSE 的事件字段来区分返回的内容?

【问题讨论】:

  • 不是答案,但signalr.net 不能解决您的问题?

标签: javascript asp.net server-sent-events


【解决方案1】:

您可以尝试注册一个事件监听器,而不是使用“onmessage”功能。这样您就可以选择收听特定的事件类型。

es = new EventSource('/events', withCredentials: true);

es.addEventListener("open", function (e) {
  alert("Connecting...");
});

es.addEventListener("error", function (e) {
  alert("Error");
});

es.addEventListener("myEvent", function (e) {
  alert("MyEvent");
  alert(e.data);
});

这里有很棒的文档: http://html5doctor.com/server-sent-events/

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 2020-06-20
    • 2023-03-08
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2015-09-24
    • 2015-06-16
    相关资源
    最近更新 更多