亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于移動互聯(lián)網(wǎng)的終端消息推送方案研究*

        2017-12-07 06:17:40
        菏澤學院學報 2017年5期
        關鍵詞:服務器端應用程序消息

        王 瑩

        (廈門東海職業(yè)技術學院,福建 廈門 361100)

        基于移動互聯(lián)網(wǎng)的終端消息推送方案研究*

        王 瑩

        (廈門東海職業(yè)技術學院,福建 廈門 361100)

        針對移動互聯(lián)網(wǎng)環(huán)境,提出了移動設備上的消息推送方案,通過消息推送方案能夠?qū)崿F(xiàn)穩(wěn)定可靠的消息推送.該消息推送方案是基于服務器主動向客戶端進行發(fā)送的,在推送中服務器支持對單獨的終端、多終端消息推送,也可以基于標簽的形式向特定的群組進行推送.提出的方案可以為移動互聯(lián)網(wǎng)應用提供快速可靠的消息推送.

        移動互聯(lián)網(wǎng);終端消息推送;Android/IOS

        1 概述

        隨著互聯(lián)網(wǎng)的發(fā)展,客戶機主動的向服務器請求信息的單一方式已經(jīng)不能夠滿足目前用戶對數(shù)據(jù)的需求,如何通過服務器向客戶機推送信息,通過為互聯(lián)網(wǎng)上內(nèi)容提供者和內(nèi)容定制方之間提供一種通信機制已經(jīng)成為了目前的研究熱點,服務端主動向客戶端進行消息推送,提高了服務器的主動性的同時也增加了服務器與客戶端的交互性能[1~2].

        傳統(tǒng)互聯(lián)網(wǎng)都是客戶端主動向服務器請求數(shù)據(jù),服務器接收用戶的請求后將用戶請求的數(shù)據(jù)傳輸?shù)娇蛻舳?而客戶端與服務器端保持心跳,服務器主動向客戶端推送信息則是目前新興互聯(lián)網(wǎng)中的PUSH數(shù)據(jù)交互方式[3].PUSH的使用場景有時間不確定性以及時效性兩個特點,在日常應用中發(fā)送的團購信息、電子消費賬單等都是通過PUSH數(shù)據(jù)交互方式實現(xiàn)的[4~5],本文基于移動互聯(lián)網(wǎng)的環(huán)境,提出了移動終端推送的解決方案,并且詳細分析了第三方的應用如何接入本文的移動解決方案.

        2 推送解決方案

        消息推送是實現(xiàn)消息從服務器端發(fā)送到客戶端的過程,由于服務器端與客戶端的關系是一對多的關系,因此,一條消息在服務器端可能會發(fā)送給多個客戶端.消息推送的過程是啟動客戶端的同時需要在推送服務器主動注冊,推送服務器記錄客戶端的消息并且通過心跳方案定時檢查客戶端是否在線,如果服務器端在心跳方案中檢測客戶端已經(jīng)下線,則服務器記錄該客戶端為下線狀態(tài),對于下線狀態(tài)的客戶端由于服務器無法與其建立通訊連接,因此,是不能對下線的客戶端進行消息推送的.當服務器有消息要發(fā)送給客戶端時,服務器在進行注冊過的客戶端中選擇在線的客戶端,請求通過消息篩選方式選擇需要發(fā)送的客戶端,服務器與客戶端建立消息連接,通過消息連接將消息發(fā)送到客戶端,完成移動應用的消息推送.

        在系統(tǒng)需要對下線的客戶端進行消息推送時,我們通過在服務器記錄需要發(fā)送的消息以及下線的客戶端信息,當服務器檢測到客戶端上線并且在消息服務器進行注冊時,服務器與客戶端建立消息推送連接,將客戶端的離線信息推送到對應的客戶端.移動應用的消息推送主要包括推送服務器以及客戶端兩個部分,如下對推送服務器以及客戶端進行介紹.

        推送服務器:推送服務器負責維護客戶端的基本情況以及狀態(tài),同時,將消息推送給客戶端,具體包括接收客戶端的連接請求,記錄已經(jīng)連接的客戶端信息,并且通過輪詢的機制對客戶端進行心跳檢查,記錄客戶端的活動狀態(tài).

        客戶端:通過TCP/UDP方式主動發(fā)起對推送服務器的連接請求,連接成功后負責接收推送服務器下發(fā)的推送信息以及回復推送服務器的心跳檢查.

        移動消息推送解決方案如圖1所示.

        圖1 移動消息推送解決方案

        從圖1可見,對在消息推送過程中的客戶端與服務器端的交互流程進行了設計,移動消息推送實施之前需要客戶端到推送服務器注冊,消息推送服務器檢查注冊客戶端的在線狀態(tài)以及消息推送服務器通過消息推送連接發(fā)送消息給客戶端,移動消息推送解決方案的詳細流程如下:

        1)啟動推送服務器,初始化服務器,并且在服務器端開啟客戶端連接服務進程;

        2)啟動客戶端,客戶端主動向推送服務器發(fā)起注冊請求;

        3)推送服務器接收客戶端推送注冊請求,驗證客戶端是否滿足注冊條件,如果滿足則記錄客戶端注冊信息,否則,告知客戶端注冊失??;

        4)客戶端接收服務器注冊返回結(jié)果,如果注冊失敗,則提示推送注冊失敗,流程結(jié)束;

        5)客戶端推送注冊成功,開啟推送服務器心跳檢查回復進程,如果在長時間沒有收到服務器心跳檢查,客戶端需主動向注冊服務器上報狀態(tài);

        6)服務器端定時需要注冊的客戶端發(fā)送心跳檢查,并且記錄客戶端上報的狀態(tài),如果長時間沒有收到某個客戶端的狀態(tài)上報,則認為此客戶端為睡眠狀態(tài);

        7)服務器端有消息需要推送時,遍歷在服務器端注冊的處于活躍的客戶端,并且將信息發(fā)送給客戶端.

        3 第三方推送服務

        消息推送在移動互聯(lián)網(wǎng)中的應用是目前的一個研究熱點,大量移動應用都需要消息推送服務與用戶進行交互.但是,移動消息推送作為一個與系統(tǒng)業(yè)務不相關的功能,如果每個應用都開發(fā)自己的一套消息推送系統(tǒng),不僅僅會加大應用開發(fā)的成本,降低應用開發(fā)的進度,同時,消息推送效率也很難滿足實際要求.因此,目前消息推送在移動應用中都是通過接入第三方消息推送系統(tǒng)所提供的移動應用消息推送功能來實現(xiàn).

        接入第三方消息推送系統(tǒng)的應用方式優(yōu)勢在于消息推送與應用的業(yè)務邏輯是完全解耦的,實現(xiàn)了系統(tǒng)的高內(nèi)聚低耦合的要求,使用第三方消息推送可以降低應用開發(fā)成本,加快應用開發(fā)的進度.由于第三方消息推送專注于解決消息推送過程中的核心技術,因此,在消息推出過程中的耗電問題、網(wǎng)絡穩(wěn)定性以及推送到達率等核心問題的解決上有一定的優(yōu)勢.

        新的移動互聯(lián)網(wǎng)推送方案能夠為移動APP提供推送服務的解決方案,但是,對于具體的APP開發(fā),由于推送不是其核心業(yè)務,所以,完全沒有必要去開發(fā)和維護一套推送系統(tǒng),因此,如何以第三方的方式接入本文的移動互聯(lián)網(wǎng)推送解決方案,研究如何為移動應用提供第三方推送服務是非常必要的,如圖2所示,是通過第三方推送服務方案接入本文消息推送系統(tǒng)的詳細設計圖.

        圖2 第三方應用接入推送服務方案

        通過第三方的形式提供推送服務不僅可以減少移動應用開發(fā)在消息推送中的投入,而且能夠提高消息推送的到達率等.在應用接入第三方的消息推送服務器過程中只需要移動應用的客戶端中包括推送SDK,并且客戶端通過推送SDK到推送服務器進行注冊以及響應消息推送的心跳檢查.在第三方的應用程序接入推送服務方案中通過推送SDK、推送服務器、應用服務器和應用程序之間進行信息交互實現(xiàn)了移動信息的推送,各實體描述如下:

        推送SDK:作為應用程序的客戶端集成工具包,提供應用程序與推送服務器之間的交互,包括到推送服務器注冊以及接收并處理推送服務器推送的信息.

        推送服務器:需要維護已經(jīng)注冊的推送客戶端信息,并且與推送客戶端保持心跳連接,在推送中與指定的客戶端建立消息傳輸連接,將服務器的信息主動推送到客戶端.

        應用服務器:第三方應用程序的服務器,與推送服務器進行交互,將需要推送的數(shù)據(jù)以及客戶端信息提交給推送服務器,有推送服務器完成消息推送.

        應用程序:即第三方應用程序,是集成了推送SDK的移動應用,對推送SDK接收的信息進行顯示,并且可以控制推送SDK的消息收發(fā)功能.

        應用服務器需要保持Client ID與客戶端UID的映射關系,在消息推送時通過映射關系確定推送客戶端,再由推送服務器實施消息推送,完整的第三方推送服務推送過程的技術流程如下:

        1)應用程序集成推送SDK;

        2)應用程序啟動時,通過推送SDK到推送服務器進行注冊,并且與推送服務器保持心跳連接;

        3)應用服務將需要推送的消息以及客戶端信息提交給推送服務器,由推送服務器與推送SDK進行交互完成消息推送;

        4)推送SDK獲取推送服務器的消息,通過一定的形式提交給應用程序進行消息內(nèi)容展示.

        在推送實現(xiàn)中,移動APP通過推送工具包與推送服務器進行通訊,移動推送的核心代碼是通過向推送服務器發(fā)送客戶端編號以及需要推送給客戶端的信息內(nèi)容,推送服務器通過TCP/IP協(xié)議與移動APP的第三方推送SDK建立連接并激活客戶端,將信息發(fā)送到客戶端,移動APP推送的核心代碼如下:

        public class PusherUtil {

        private static final Logger logger = LoggerFactory.getLogger(PusherUtil.class);

        /* 向user 推送消息msg*/

        public static void push(String host, int port, String deviceUid, String msg) {

        logger.info("ddpush args [ host:{}, port:{}, user:{}, msg:{} ]", host, port, deviceUid, msg);

        StopWatch sw = new StopWatch();

        sw.start();

        Pusher pusher = null;

        try {

        InetAddress ipAddress = InetAddress.getByName(host);

        pusher = new Pusher(ipAddress.getHostAddress(), port, 5000);

        pusher.push0x20Message(md5Byte(deviceUid), msg.getBytes("UTF-8"));

        } finally {

        if (pusher != null) {

        try {

        pusher.close();

        }

        }

        sw.stop();

        logger.info("ddpush time : {} ms", sw.getTotalTimeMillis());

        }

        public static PushedNotifications push(String apnsFilePath, String password, boolean production, String deviceToken, String msg, String type) {

        logger.info("apns args [ password:{}, production:{}, deviceToken:{}, msg:{}, type:{}]", password, production, deviceToken, msg, type);

        StopWatch sw = new StopWatch();

        sw.start( );

        try {

        PushNotificationPayload complexPayload = PushNotificationPayload.complex();

        complexPayload.addCustomAlertLocKey(msg);

        complexPayload.addBadge(0);

        complexPayload.addSound("default");

        complexPayload.addCustomDictionary("type", type);

        PushedNotifications pn = Push.payload(complexPayload, apnsFilePath, password, production, deviceToken);

        logger.info("apns time : {} ms", sw.getTotalTimeMillis());

        return pn;

        } catch (CommunicationException e) {

        throw new RuntimeException(e);

        }

        }

        /*向所有人推送消息msg*/

        public static void push(String host, int port, String msg) {

        push(host, port, KMO_USER, msg);

        }

        private static byte[] md5Byte(String encryptStr) throws Exception {

        MessageDigest md = MessageDigest.getInstance("MD5");

        md.update(encryptStr.getBytes("UTF-8"));

        return md.digest();

        }

        }

        4 總結(jié)

        移動互聯(lián)網(wǎng)的快速成長促進了消息推送服務的發(fā)展,而消息推送本身與應用程序具體業(yè)務無關,因此將消息推送作為第三方的程序為應用程序提供服務的方式應運而生.綜上所述提出的移動互聯(lián)網(wǎng)的推送解決方案,分析了推送系統(tǒng)的結(jié)構和消息推送流程,并對第三方如何接入該推送服務進行了介紹.

        雖然針對移動終端提出了推送解決方案,但是,目前仍然有耗電問題、網(wǎng)絡穩(wěn)定性以及推送到達率等技術問題需要克服,下一步我們的工作將繼續(xù)對移動互聯(lián)網(wǎng)的推送關鍵技術進行研究,致力于實現(xiàn)移動互聯(lián)網(wǎng)上最穩(wěn)定可靠的推送服務,并在相關技術參數(shù)上做到最優(yōu).

        [1]許金喜, 張新有. Android平臺基于MQTT協(xié)議的推送機制[J]. 計算機系統(tǒng)應用, 2015, 24(1):185-190.

        [2]倪紅軍. 基于Android平臺的消息推送研究與實現(xiàn)[J]. 實驗室研究與探索, 2014, 33(5):96-100.

        [3]汪海占, 邸萌, 黃祥林. 基于XMPP協(xié)議的Android消息推送設計與實現(xiàn)[J]. 科技廣場, 2015(2):40-46.

        [4]李文江, 陳詩琴. 基于Android GCM服務的圖書館信息推送系統(tǒng)設計[J]. 現(xiàn)代圖書情報技術, 2013, 29(11):91-96.

        [5]蘇龍江. 基于iOS的輿情推送系統(tǒng)的設計與實現(xiàn)[D]. 廈門:廈門大學, 2013.

        OnSchemeofTerminalMessagePushBasedonMobileInternet

        WANG Ying

        (Xiamen Donghai Institute, Xiamen Fujian 361100, China)

        Aiming at the mobile internet environment, a message push scheme for mobile devices is proposed to achieve stable and reliable message push. The scheme is sent by the server to the client automatically including individual terminal, multi terminals and specific groups in the form of tags. The proposed scheme can provide fast and reliable message push for mobile internet applications.

        mobile internet; terminal message push; Android/IOS

        1673-2103(2017)05-0045-05

        2017-07-06

        2014年福建省中青年教師教育科研項目(JAS14914)

        王瑩(1980-),女,山東掖縣人,講師,碩士,研究方向:計算機應用技術.

        TP393.4

        A

        猜你喜歡
        服務器端應用程序消息
        一張圖看5G消息
        刪除Win10中自帶的應用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        淺析異步通信層的架構在ASP.NET 程序中的應用
        成功(2018年10期)2018-03-26 02:56:14
        在Windows中安裝OpenVPN
        消息
        消息
        消息
        網(wǎng)頁防篡改中分布式文件同步復制系統(tǒng)
        關閉應用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        三星電子將開設應用程序下載商店
        放荡的美妇在线播放| 欧美巨大xxxx做受中文字幕| 国产成版人性视频免费版| 青青草成人在线播放视频| 亚洲二区三区在线播放| 91九色播放在线观看| 国产又色又爽无遮挡免费软件| 久久精品人人爽人人爽| 亚洲国产一区二区三区最新| 色佬易精品视频免费在线观看| 日本道免费一区二区三区日韩精品 | 成人水蜜桃视频在线观看| 久久久精品国产免大香伊| 无码精品人妻一区二区三区人妻斩 | 91精品啪在线观看国产色| 精品人妻系列无码人妻漫画| 国产乱xxⅹxx国语对白| 亚洲偷自拍另类图片二区| 精品人妻一区二区视频| 蜜臀av在线观看| 97精品伊人久久大香线蕉| 亚洲日本国产乱码va在线观看| 日韩中文字幕久久久老色批| 乱码丰满人妻一二三区| 日本高清www午色夜高清视频 | 国产激情无码一区二区三区| 亚洲综合色丁香婷婷六月图片| 熟女白浆精品一区二区| 男女av免费视频网站| 黑色丝袜秘书夹住巨龙摩擦| 国产午夜在线观看视频播放| 日本最新在线一区二区| 人妻少妇哀求别拔出来| 日本成本人三级在线观看| 久久亚洲第一视频黄色| 亚洲国产精品日韩av专区| 欧美日韩亚洲中文字幕二区| 欧美自拍区| av网站韩日在线观看免费| 在线中文字幕乱码英文字幕正常| 国产av国片精品|