国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

使用ASP.NET MVC 4 Async Action+jQuery實(shí)現(xiàn)消息通知機(jī)制的實(shí)現(xiàn)代碼

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:41:40
文檔

使用ASP.NET MVC 4 Async Action+jQuery實(shí)現(xiàn)消息通知機(jī)制的實(shí)現(xiàn)代碼

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

這兩天在使用Asp.net MVC 4開發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過AJAX長(zhǎng)連接請(qǐng)求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對(duì)象的變更消息(新增,更新和刪除消息)。

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

代碼如下:
public interface IEntityEvent<TEntity>
    {
        //變更的實(shí)體類對(duì)象
        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
    {
        //異步獲取對(duì)ImageSet對(duì)象操作的變更事件Action,millsecondsTimeout為超時(shí)時(shí)間。
        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中使現(xiàn)異步asp.net mvc async action(可以參考:Using Asynchronous Methods in ASP.NET MVC 4 技術(shù)文章)的技術(shù),其中方法前的async關(guān)鍵字可以和Task對(duì)象進(jìn)行配合使用,表示該方法為異步方法,由編譯器生成運(yùn)行時(shí)所需的相關(guān)異步操作的邏輯代碼,另外方法中必須使用到await語(yǔ)句來等待一個(gè)異步操作的結(jié)束,await和Task<T>結(jié)合來返回Task完成的Result

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

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

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: 處理實(shí)體類新增

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

                                getEvent();
                            }
                        });

                        return;
                    }

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

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

                            //TODO: 處理實(shí)體類更新

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

                                getEvent();
                            }
                        });

                        return;
                    }


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

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

                            //TODO: 處理實(shí)體類刪除

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

                                getEvent();
                            }
                        });
                    }

                }else{

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

        getEvent();
    });

代碼中主要需要控制住在一次獲得消息(無論是有消息還是無消息),都需要在恰當(dāng)?shù)臅r(shí)機(jī)現(xiàn)一次的調(diào)用getEvent()方法來進(jìn)行消息獲取的循環(huán)。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用ASP.NET MVC 4 Async Action+jQuery實(shí)現(xiàn)消息通知機(jī)制的實(shí)現(xiàn)代碼

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

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产啪视频 | 久久99精品久久久久久噜噜 | 91原创在线| 免费黄毛片 | 久久久久亚洲精品美女 | 国产精品第 | 国产91精品一区二区麻豆亚洲 | 亚洲欧美精品伊人久久 | 国产欧美综合在线观看第七页 | 欧美在线视频观看 | 免费在线观看一区二区 | 国产亚洲欧美一区 | 久久精品一区二区影院 | 国产成人综合久久精品亚洲 | 久久久久女人精品毛片九一 | 在线视频 中文字幕 | 在线一区观看 | 国产人澡人澡澡澡人碰视频 | 欧美日韩国产va另类试看 | 美女牲交视频一级毛片 | 日韩在线第三页 | 在线免费观看国产精品 | 欧美日韩片 | 国产精品日韩精品 | 国产成人h福利小视频在线观看 | 国内精品一区二区在线观看 | 国产一区二区三区精品视频 | 91精品国产综合久久久久久 | 日韩精品一区二区三区不卡 | 欧美成人性色生活18黑人 | 欧美xx在线 | 欧美啊v | 日韩一区二区三区精品 | 成人三级在线 | 亚洲视频在线观看 | 一区二区三区国产 | 国产在线高清不卡免费播放 | 精品一区二区三区的国产在线观看 | 国产成人精品日本亚洲网址 | 99久久一区 | 中文字幕精品一区二区精品 |