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

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答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
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

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

來(lái)源:懂視網(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開(kāi)發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過(guò)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開(kāi)發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過(guò)AJAX長(zhǎng)連接請(qǐng)求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對(duì)象的變更消息(新增,更新和刪除消息)。 1.事件消息的類I

這兩天在使用Asp.net MVC 4開(kāi)發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過(guò)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ǔ)句來(lái)等待一個(gè)異步操作的結(jié)束,await和Task<T>結(jié)合來(lái)返回Task完成的Result

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

3.這里就不具體寫(xiě)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();
    });

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

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wè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開(kāi)發(fā)COMET消息通知機(jī)制,在后端使用異步線程對(duì)消息進(jìn)行訂閱,客戶端通過(guò)AJAX長(zhǎng)連接請(qǐng)求MVC中的ACTION,如:http://localhost/event/imageSet,即表示獲取ImageSet對(duì)象的變更消息(新增,更新和刪除消息)。 1.事件消息的類I
推薦度:
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專題
Top
主站蜘蛛池模板: 欧美成人免费高清二区三区 | 亚洲自拍偷拍网 | 国产成人精品aaaa视频一区 | 亚洲欧美日韩中文字幕在线 | 欧美亚洲国产精品 | 韩国一区二区三区 | 悠悠久久| 看全色黄大色黄女片爽毛片 | 久久亚洲精品国产精品777777 | 亚洲狼人香蕉香蕉在线28 | 中日韩一区二区三区 | 欧美天天搞| 国产成人精品一区二三区2022 | 欧美在线观看一区 | 亚洲美女一区二区三区 | 国产日产欧美精品一区二区三区 | 久操综合 | 精品国产高清自在线一区二区三区 | 欧美综合国产精品日韩一 | 成人欧美一区二区三区视频 | 精品久久久久久久一区二区手机版 | 日本三级一区二区三区 | 欧美亚洲另类视频 | 日本一区二区三区高清在线观看 | 国产视频一区二区在线播放 | 亚洲国产精品一区二区久久 | 日韩高清在线观看 | 亚洲一区二区三区免费 | 激情综合网站 | 一区二区视频 | 国产一区二区三区高清 | 日韩精品欧美视频 | 亚洲欧美一区二区三区九九九 | 国模沟沟一区二区三区 | 亚洲另类第一页 | 亚洲专区欧美专区 | 日本成人一级 | 国产在线高清视频 | 国产亚洲精品一品区99热 | 国产午夜视频在线 | 伊人99热 |