更改 EventSouce 事件名称在 asp.net 中不起作用
Changing EventSouce event name not working in asp.net
我有一个 asp.net mvc
应用 knockout.js
我正在使用 HTML5 EventSource
推送消息
c#
private static void UpdateOnlineUsers()
{
var ou = Clients.Select(c => new { UserName = c.User.Name, Time = c.DateTime.ToString("G") }).ToList();
Clients.ForEach(c =>
{
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});
}
并且javascript是
eventSource.addEventListener('message', function (e) {
if (e.data.length) {
var json = JSON.parse(e.data);
if (json.Text) {
messages.push(json);
}
else onlineUsers(json);
}
}, false);
工作正常。
但我想为事件添加一个特定的名称,所以我在 c# 方法中添加了新行,例如
Clients.ForEach(c =>
{
c.Stream.WriteLine("event: messenger \n"); // added new
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});
并将脚本更改为
eventSource.addEventListener('messenger',...`
添加事件名称后停止工作
请帮忙!
谢谢。
如果您删除事件名称和“\n”之间的 space,它看起来会起作用,如下所示:
Clients.ForEach(c =>
{
c.Stream.WriteLine("event: messenger\n"); // added new w/o space
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});
我有一个 asp.net mvc
应用 knockout.js
我正在使用 HTML5 EventSource
推送消息
c#
private static void UpdateOnlineUsers()
{
var ou = Clients.Select(c => new { UserName = c.User.Name, Time = c.DateTime.ToString("G") }).ToList();
Clients.ForEach(c =>
{
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});
}
并且javascript是
eventSource.addEventListener('message', function (e) {
if (e.data.length) {
var json = JSON.parse(e.data);
if (json.Text) {
messages.push(json);
}
else onlineUsers(json);
}
}, false);
工作正常。
但我想为事件添加一个特定的名称,所以我在 c# 方法中添加了新行,例如
Clients.ForEach(c =>
{
c.Stream.WriteLine("event: messenger \n"); // added new
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});
并将脚本更改为
eventSource.addEventListener('messenger',...`
添加事件名称后停止工作
请帮忙!
谢谢。
如果您删除事件名称和“\n”之间的 space,它看起来会起作用,如下所示:
Clients.ForEach(c =>
{
c.Stream.WriteLine("event: messenger\n"); // added new w/o space
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "\n\n");
});