做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 22:41:40
文檔

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

使用ASP.NET MVC 4 Async Action+jQuery實現消息通知機制的實現代碼:這兩天在使用Asp.net MVC 4開發COMET消息通知機制,在后端使用異步線程對消息進行訂閱,客戶端通過AJAX長連接請求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對象的變更消息(新增,更新和刪除消息)。 1.事件消息的類I
推薦度:
導讀使用ASP.NET MVC 4 Async Action+jQuery實現消息通知機制的實現代碼:這兩天在使用Asp.net MVC 4開發COMET消息通知機制,在后端使用異步線程對消息進行訂閱,客戶端通過AJAX長連接請求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對象的變更消息(新增,更新和刪除消息)。 1.事件消息的類I

這兩天在使用Asp.net MVC 4開發COMET消息通知機制,在后端使用異步線程對消息進行訂閱,客戶端通過AJAX長連接請求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取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()方法來進行消息獲取的循環。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

使用ASP.NET MVC 4 Async Action+jQuery實現消息通知機制的實現代碼:這兩天在使用Asp.net MVC 4開發COMET消息通知機制,在后端使用異步線程對消息進行訂閱,客戶端通過AJAX長連接請求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對象的變更消息(新增,更新和刪除消息)。 1.事件消息的類I
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 临漳县| 木里| 庆阳市| 前郭尔| 铜陵市| 新源县| 五大连池市| 长治县| 郎溪县| 阳山县| 汾阳市| 海林市| 霞浦县| 南安市| 广宁县| 桃江县| 宝兴县| 贞丰县| 姚安县| 东乡族自治县| 安平县| 凤台县| 和田县| 丹凤县| 永胜县| 弥勒县| 石渠县| 花垣县| 民县| 明水县| 黎城县| 公安县| 平潭县| 宁海县| 加查县| 竹溪县| 维西| 阿克苏市| 阿图什市| 海阳市| 德惠市|