После нескольких часов поиска в Google я нашел только один пример источника события, использующего для asp.net (Not MVC). Во-первых, я должен сказать, что хочу изучить его, и моя конечная цель - создать дружественный покерный сайт. SignalR очень очень хорошо для моей цели, но я не хочу использовать это, потому что я слышал:Источник события в asp.net имеет ответ с одной задержкой поворота
SignalR плохо в исполнении
является не (я надеюсь, что нет?). Моя проблема в том, когда сервер отправляет ответ клиенту он посылает предыдущий текст не ток:
$("#btnListen").click(function()
{
var source = new EventSource('SSEHandler.ashx');
source.addEventListener("open", function (event)
{
$('#headerDiv').append('Latest 5 values');
}, false);
source.addEventListener("error", function (event)
{
if (event.eventPhase == EventSource.CLOSED)
{
$('#footerDiv').append('Connection Closed!');
}
}, false);
source.addEventListener("message", function (event)
{
console.log(event.data);
}, false);
});
И это SSEHandler:
public class SSEHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
HttpResponse Response;
Response = context.Response;
Response.ContentType = "text/event-stream";
Response.Write(string.Format("data: {0}\n\n", "first"));
Response.Flush(); //client has no response received yet
Response.Write(string.Format("data: {0}\n\n", "second"));
Response.Flush(); //now client get "first".
Response.Close();
}
}
После выполнения этого треска консоль клиента только «первый». И если я добавить это в конце SSEHandler:
Response.Write(string.Format("data: {0}\n\n", "third"));
Response.Flush();
В консоли клиента есть «первая», «Второй». Спасибо, что прочитал мой длинный пост.
попробуйте сигналR и посмотрите, достаточно ли он для вашего проекта. код выше выглядит хорошо, возможно, пробовал комментарий до закрытия() ing ... – dandavis
Спасибо @dandavis. Как я могу проверить SignalR на 40 человек, используя его в одно и то же время? И не могли бы вы объяснить больше, чтобы добавить комментарий перед закрытием? –
комментарий, такой как keep-alive, может заставить клиента засеять все отправленные данные. я не знаю, как протестировать 40 одновременно, возможно, запустил 8 вкладок на 5 компьютеров? – dandavis