更改 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");
    });