Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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
Javascript 具有服务器发送事件的自定义事件_Javascript_Asp.net_Server Sent Events - Fatal编程技术网

Javascript 具有服务器发送事件的自定义事件

Javascript 具有服务器发送事件的自定义事件,javascript,asp.net,server-sent-events,Javascript,Asp.net,Server Sent Events,我试图利用服务器发送的事件来处理服务器端正在执行的一些异步操作的客户端。滚动至底部以查看最后一个问题 我拥有的是一个需要全局搜索的web应用程序。返回可能是大量的,并且需要一些时间,因为它们实际上被发送到Web服务,然后作为XML返回 我正在尝试使用服务器发送的事件(javascript:EventSource)来启用此功能。它只对一个活动有效,但如果我想做一系列不同的活动,它会变得有点奇怪,至少对我来说是这样。我是新来的 到目前为止,我已经做到了: var sse = new EventSou

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

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

我正在尝试使用服务器发送的事件(javascript:EventSource)来启用此功能。它只对一个活动有效,但如果我想做一系列不同的活动,它会变得有点奇怪,至少对我来说是这样。我是新来的

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

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”格式,它就可以工作得很好。我需要做的是在那里获得更多的信息

说明可以指定要激发的事件。不过,到目前为止,我还不能让它发挥作用

在我的aspx中,我构建的字符串如下:

json = string.Format("id:{0}\n event:myEvent\n data:{1}\n\n", id, ser.Serialize(ccrData));
我已经尝试创建一个自定义事件,但我不确定要将它绑定到什么才能捕获它

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

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

您可以尝试注册事件侦听器,而不是使用“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);
});
这里有很好的文档:

您可以尝试注册事件侦听器,而不是使用“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);
});
这里有很好的文档:

不是答案,但不能解决您的问题?不是答案,但不能解决您的问题?