亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

使用ASP.NET MVC 4 Async Action+jQuery實現消息通知機制的實現代碼

2024-07-10 13:17:20
字體:
來源:轉載
供稿:網友

這兩天在使用Asp.net MVC 4開發COMET消息通知機制,在后端使用異步線程對消息進行訂閱,客戶端通過AJAX長連接請求MVC中的ACTION,如:,即表示獲取ImageSet對象的變更消息(新增,更新和刪除消息)。

1.事件消息的類IEventEntity<TEntity>類的定義

復制代碼 代碼如下:


public interface IEntityEvent<TEntity>
    {
        //變更的實體類對象
        TEntity[] Entities
        {
            get;
        }

        //操作類型
        EntityEventType Type
        {
            get;
        }
    }

    public enum EntityEventType : int
    {
        Create = 0,
        Update = 1,
        Removed = 2
    }


2.EntityEventController類

復制代碼 代碼如下:


[SessionState(SessionStateBehavior.ReadOnly)]
    public class EntityEventController : Controller
    {
        //異步獲取對ImageSet對象操作的變更事件Action,millsecondsTimeout為超時時間。
        public async Task<ActionResult> ImageSet(int millisecondsTimeout = 10000)
        {
            return await this.EventAsync<ImageSetData>(millisecondsTimeout);
        }

        private async Task<ActionResult> EventAsync<TEntity>(int millisecondsTimeout)
        {
            IEntityEvent<TEntity> entityEvent = await EntityEventSubcriber.Instance.WaitForEntityEvent<TEntity>(millisecondsTimeout);

            return this.Json(new
            {
                HasEvent = null != entityEvent,
                EntityEvent = entityEvent

            }, JsonRequestBehavior.AllowGet);
        }
    }


(1)這里使用到了.Net Framework 4.5中使現異步asp.net mvc async action(可以參考:Using Asynchronous Methods in ASP.NET MVC 4 技術文章)的技術,其中方法前的async關鍵字可以和Task對象進行配合使用,表示該方法為異步方法,由編譯器生成運行時所需的相關異步操作的邏輯代碼,另外方法中必須使用到await語句來等待一個異步操作的結束,await和Task<T>結合來返回Task完成的Result

(2) 如果Controller層面應用或者Filter中操作過Session,那么為了避免長鏈接時不會導至同一Session在其他調用中Session Block的情況,需要在Controller頭上加入[SessionState(SessionStateBehavior.ReadOnly)] 的Attribute,來表示當前Controller對Session為只讀操作,這樣就其他操作就不會被阻塞了。

3.這里就不具體寫EntityEventSubscriber消息訂閱器的代碼了,以后將在“消息訂閱與發布”的文章中詳細描述。

4.jQuery AJAX客戶端代碼

復制代碼 代碼如下:


$(document).ready(function () {

        var $hoverList = $("#imageSets").hoverList({title:"圖片集列表", selectedIndex: 1 });

        var getEvent = function(){

            var getPattern = "/EasyshirtBackend/imageSet/0";

            $.getJSON("/EasyshirtBackend/event/imageSet/100000" , function(data){

                if(data.HasEvent){

                    //Create
                    if(data.EntityEvent.Type == 0){

                        $.each(data.EntityEvent.Entities, function(i, entity){

                //TODO: 處理實體類新增

                            if(i == data.EntityEvent.Entities.length - 1){

                                getEvent();
                            }
                        });

                        return;
                    }

                    //Update
                    if(data.EntityEvent.Type == 1){

                        $.each(data.EntityEvent.Entities, function(i, entity){

                            //TODO: 處理實體類更新

                            if(i == data.EntityEvent.Entities.length - 1){

                                getEvent();
                            }
                        });

                        return;
                    }


                    //Delete
                    if(data.EntityEvent.Type == 2){

                        $.each(data.EntityEvent.Entities, function(i, entity){

                            //TODO: 處理實體類刪除

                            if(i == data.EntityEvent.Entities.length - 1){

                                getEvent();
                            }
                        });
                    }

                }else{

                    $("#imageSets").hoverList("add", data);
                    getEvent();
                }
            });
        };

        getEvent();
    });


代碼中主要需要控制住在一次獲得消息(無論是有消息還是無消息),都需要在恰當的時機現一次的調用getEvent()方法來進行消息獲取的循環。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜久久久久久久| 久久99青青精品免费观看| 成人免费视频xnxx.com| 日韩av在线免费观看| 欧美在线视频a| 亚洲国产精品电影| 色先锋久久影院av| 亚洲男人的天堂在线播放| 欧美一级淫片videoshd| 亚洲欧美在线免费| 亚洲一区二区三区视频播放| 成人免费视频网址| 亚洲日韩欧美视频一区| 国内精品400部情侣激情| 国产一区玩具在线观看| 成人国产精品av| 国产精品久久久久99| 亚洲a级在线播放观看| 日韩精品在线电影| 成人福利视频在线观看| 亚洲免费视频网站| 日韩av手机在线看| 在线看片第一页欧美| 亚洲网站视频福利| 国产激情久久久久| 亚洲高清在线观看| 亚洲韩国欧洲国产日产av| 欧美主播福利视频| 亚洲福利视频专区| 欧美日韩亚洲高清| 国产精品wwww| 欧美日韩国产麻豆| 国产精品成人av性教育| 欧美中文字幕在线观看| 狠狠色噜噜狠狠狠狠97| 国产成人久久久精品一区| 成人免费高清完整版在线观看| 亚洲欧美日韩天堂| 国产精品麻豆va在线播放| 日本国产精品视频| 久久国产精品亚洲| 欧美肥臀大乳一区二区免费视频| 国产精品视频网| 国产精品毛片a∨一区二区三区|国| 成人在线视频网| 亚洲最大成人免费视频| 日韩精品在线私人| 精品在线欧美视频| 日本道色综合久久影院| 欧美日韩成人黄色| 中文字幕亚洲在线| 在线国产精品播放| 欧美午夜女人视频在线| 国产欧美在线播放| 在线电影av不卡网址| 在线观看久久久久久| 国产一区二区三区在线免费观看| 亚洲欧美激情在线视频| 久久久久在线观看| 国产女人精品视频| 亚洲天堂网站在线观看视频| 亚洲午夜激情免费视频| 国产精品69精品一区二区三区| 国产欧美韩国高清| 国产精品久久久久9999| 92福利视频午夜1000合集在线观看| 欧美激情一区二区久久久| 亚洲欧美国产一区二区三区| 国产精品视频xxx| 日韩成人xxxx| 亚洲国产天堂久久综合| 国产精品久久在线观看| 亚洲自拍高清视频网站| 亚洲男人天堂网站| 久久久久久网址| 久热在线中文字幕色999舞| 国产精品久久久久久婷婷天堂| 欧洲成人在线观看| 欧美xxxx综合视频| 97国产精品视频| 国产视频久久网| 91在线播放国产| 91久久综合亚洲鲁鲁五月天| 国产精品亚洲片夜色在线| 色吧影院999| 国产日韩在线一区| 国产精品va在线播放| 久久综合电影一区| 午夜精品久久久久久久99热| 午夜欧美不卡精品aaaaa| 国产精品一区二区电影| 中文字幕在线看视频国产欧美在线看完整| 久久精品99久久久久久久久| 亚洲一区第一页| 91网站在线看| 在线播放日韩av| 亚洲天堂男人的天堂| 久久国产精品久久久久| 欧美日韩国产精品一区二区三区四区| 91久久精品美女| 久久久免费在线观看| 国产精品美女免费| 成人黄在线观看| 国产不卡一区二区在线播放| 欧美特级www| 国产热re99久久6国产精品| 久久成人精品一区二区三区| 美女精品视频一区| 久久国产精品影视| 亚洲国产精品国自产拍av秋霞| 久久91精品国产91久久久| 欧美中文在线免费| 国产欧美中文字幕| 国产精品日韩电影| 亚洲免费av网址| 亚洲第一中文字幕| 欧美电影免费看| 国产成人av在线播放| www高清在线视频日韩欧美| 精品人伦一区二区三区蜜桃免费| 一区二区三区在线播放欧美| 91网站在线免费观看| 日韩精品中文字幕在线观看| 久久久久久久一区二区三区| 亚洲片国产一区一级在线观看| 在线电影av不卡网址| 国产午夜精品理论片a级探花| 成人午夜两性视频| 国产成人a亚洲精品| 国产乱人伦真实精品视频| 伊人激情综合网| 91最新在线免费观看| 最近2019中文免费高清视频观看www99| 欧美精品生活片| 国产日韩视频在线观看| 日韩欧美成人免费视频| 黑人狂躁日本妞一区二区三区| 国产又爽又黄的激情精品视频| 韩曰欧美视频免费观看| 91中文在线视频| 久久伊人色综合| 欧美自拍大量在线观看| 中文字幕亚洲一区在线观看| 亚洲成人久久一区| 亚洲欧美精品在线| 久久久久久久一区二区三区| 久久国产精品久久久久久| 亚洲国产天堂久久综合| 亚洲免费一级电影| 国产一区二区三区在线| 国产原创欧美精品| 久久露脸国产精品| 97avcom| 91亚洲va在线va天堂va国| 亚洲一区二区久久久| 欧洲成人午夜免费大片| 亚洲日本欧美中文幕| 国产乱肥老妇国产一区二| 国产精品国产三级国产aⅴ浪潮| 国产香蕉精品视频一区二区三区| 亚洲日本中文字幕免费在线不卡| 国产欧美最新羞羞视频在线观看| 亚洲va久久久噜噜噜| 久久国产精品偷|