更改事件源事件名称在asp.net中不起作用
本文关键字:asp net 不起作用 事件源 事件 | 更新日期: 2023-09-27 17:53:42
我有一个asp.net mvc
应用程序与knockout.js
我使用HTML5 EventSource
推送消息
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"之间的空格,
看起来可以工作,如下所示:
Clients.ForEach(c =>
{
c.Stream.WriteLine("event: messenger'n"); // added new w/o space
c.Stream.WriteLine("data:" + new JavaScriptSerializer().Serialize(ou) + "'n'n");
});