在html5服务器发送事件中,为什么我在fiddler上看到轮询日志

发布于 2024-12-18 01:29:20 字数 1475 浏览 0 评论 0原文

我无法弄清楚为什么我会在 fiddler 中看到我尝试使用 HTML 5 实现的服务器发送事件的轮询日志。请在下面找到我的 fiddler 日志的图像

在此处输入图像描述

如果其服务器发送了事件,则应从服务器发送消息,而无需系统一次又一次地调用该方法来查找更新。或者我没有正确实施它。这是我的代码:

<script type="text/javascript">
    $(function () {
var userStatusChangeEvent = new EventSource("/events");
userStatusChangeEvent.onmessage = function (event) {
    data = $.parseJSON(event.data);

    for (index = 0; index < data.length; index++) {
        $elem = $('#' + data[index].Id);
        isOnline = data[index].IsOnline;

        if (isOnline) {
            $elem.addClass('is_online');
            $('.loginTimestamp', $elem).html(data[index].Time);
        }
        else {
            $elem.removeClass('is_online');
            $('.loginTimestamp', $elem).html('');
        }
    }
};
});
</script>


public virtual ActionResult Events()
    {
        var userStream = new UserServerSentStatusResult();
        userStream.ChangeUserStatus = new LoggedUsersViewModel().Users.Where(x => x.HasChanged).ToList();

        userStream.Content = () =>
        {
            var serializer = new JavaScriptSerializer();
            return serializer.Serialize(userStream.ChangeUserStatus);
        };

        userStream.ChangeUserStatus.ForEach(x =>
        {
            x.HasChanged = false;
            x.Time = DateTime.Now.ToShortTimeString();
        });
        return userStream;
    }

I am not able to figure out that why do I see polling log in fiddler for the server sent event I am trying to implement using HTML 5. Please find the image of my fiddler log below

enter image description here

If its server sent event, the message should be sent from server without system calling the method again and again to look for updates. Or i have not implemented it properly. Here my code:

<script type="text/javascript">
    $(function () {
var userStatusChangeEvent = new EventSource("/events");
userStatusChangeEvent.onmessage = function (event) {
    data = $.parseJSON(event.data);

    for (index = 0; index < data.length; index++) {
        $elem = $('#' + data[index].Id);
        isOnline = data[index].IsOnline;

        if (isOnline) {
            $elem.addClass('is_online');
            $('.loginTimestamp', $elem).html(data[index].Time);
        }
        else {
            $elem.removeClass('is_online');
            $('.loginTimestamp', $elem).html('');
        }
    }
};
});
</script>


public virtual ActionResult Events()
    {
        var userStream = new UserServerSentStatusResult();
        userStream.ChangeUserStatus = new LoggedUsersViewModel().Users.Where(x => x.HasChanged).ToList();

        userStream.Content = () =>
        {
            var serializer = new JavaScriptSerializer();
            return serializer.Serialize(userStream.ChangeUserStatus);
        };

        userStream.ChangeUserStatus.ForEach(x =>
        {
            x.HasChanged = false;
            x.Time = DateTime.Now.ToShortTimeString();
        });
        return userStream;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流心雨 2024-12-25 01:29:20

在 Fiddler 中打开流模式

Turn on the Streaming mode in Fiddler

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文