更改事件源事件名称在asp.net中不起作用

本文关键字:asp net 不起作用 事件源 事件 | 更新日期: 2023-09-27 17:53:42

我有一个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',...`

和它停止工作添加事件名称

请帮助!。

谢谢。

更改事件源事件名称在asp.net中不起作用

如果您删除事件名称和"'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");
    });