Javascript 服务器通过MVC发送事件,同时获取结果和错误
我试图获得SSE技术,但解决不了一个问题。始终在消息和错误上触发两个事件。我收到了有效日期和错误消息。为什么会发生这种情况以及如何解决?如何延长连接“polltransport请求”的生存时间 这里是服务器端Javascript 服务器通过MVC发送事件,同时获取结果和错误,javascript,asp.net,asp.net-mvc,html,server-sent-events,Javascript,Asp.net,Asp.net Mvc,Html,Server Sent Events,我试图获得SSE技术,但解决不了一个问题。始终在消息和错误上触发两个事件。我收到了有效日期和错误消息。为什么会发生这种情况以及如何解决?如何延长连接“polltransport请求”的生存时间 这里是服务器端 public class HomeController : Controller { public ActionResult Message() { JavaScriptSerialize
public class HomeController : Controller
{
public ActionResult Message()
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var serializedObject = ser.Serialize(new { item = "fuck", message = "hello" });
var sb = new StringBuilder();
sb.AppendFormat("data: {0}\n\n", serializedObject);
return Content(sb.ToString(), "text/event-stream");
}
public ActionResult SEEIndex()
{
return View();
}
}
这里是客户端javascript
$(document).ready(function () {
var serverSentEvents = new window.EventSource('/Home/Message'); //home/message /api/Event
serverSentEvents.onmessage = function (e) {
//$("#messages").append(e.data.item + '<br />');
var data = JSON.parse(e.data);
console.log('Yes! We get it, here is you data', data.item);
};
serverSentEvents.onerror = function (e) {
console.log('error');
};
if (typeof (window.EventSource) !== "undefined") {
console.log('Yes! Server-sent events support!');
}
else {
console.log('Sorry! No server-sent events support..');
}
});
$(文档).ready(函数(){
var serverSentEvents=new window.EventSource('/Home/Message');//Home/Message/api/Event
serverSentEvents.onmessage=函数(e){
//$(“#消息”).append(e.data.item+”
);
var data=JSON.parse(e.data);
log('是的!我们知道了,这是您的数据',data.item);
};
serverSentEvents.OneError=函数(e){
console.log('error');
};
if(typeof(window.EventSource)!=“未定义”){
log('Yes!服务器发送事件支持!');
}
否则{
log('抱歉!没有服务器发送事件支持..');
}
});
这里是google chrome浏览器中的屏幕和选项卡您的服务器端代码需要不断写入
响应
对象,而不是返回结果:
using System.Threading;
public class HomeController : Controller {
public ActionResult SEEIndex() {
return View();
}
public void Message() {
Response.ContentType = "text/event-stream";
do {
Response.Write("data: understandably\n");
Response.Write("data: frustrated\n");
Response.Write("\n"); //double newline signals the end of an event
Response.Flush();
Thread.Sleep(2000); //wait 2 seconds before writing again
} while (true)
}
}
返回结果将关闭连接,从而触发EventSource.onerror
有关更多详细信息,请参阅。您遇到的错误是什么?@Shashank Chaturved