对于推送的理解与总结

一、DDPush推送:

1、原理:

详见http://yt0116.blog.51cto.com/9221014/1688096

2、特点:

(1)只能实现个推,如果要推送多个人的话,就使用循环进行控制

(2)实现简单推送,但是可以自定义推送格式和内容,有通用推送、分类推送、自定义推送三种格式,比较灵活。

(3)DDPush是基于Socket编程的原理,使用UDP协议进行控制的。服务器端监听客户端信息并进行通信。

3、配置:见DDPush官网

4、疑问:

(1)uuid与客户端是怎么对应的?

在DDPush源代码中,服务器在收到一个客户端连接的时候。会创建一个客户端的虚拟对象。保存到一个集合里。这个对象里保存了这个对象的uuid(常规来说是md5加密的字符串) 还有这个客户端的网络地址、最后心跳时间、是否有消息需要推送给这个客户端等等一些属性。所以可以根据uuid去发送给相应的客户信息。

(2)DDPush服务器怎么知道要给谁推送信息?

向ddpush服务器发送推送任务的是org.ddpush.im.v1.client.appserver里面的 Pusher.java 这个类。 里面提供了几种方式 推送0x10消息 推送0x11消息 推送0x20消息 也就是说我们需要用Pusher.java 来告诉ddpush服务器 我要给100001这个用户推送一条 0x10 这种消息 然后ddpush服务器接受到了这个任务。就从 客户端虚拟客户端对象集合中查找这个用户。如果这个用户没有查找到。就根据这条推送消息来创建一个虚拟的用户对象 并存放到虚拟客户端对象集合中 当这个用户登录ddpush服务器之后 ddpush发现服务器已经存在了这个用户。就从虚拟客户端对象集合中把这个用户取出。然后修改这个客户端对象的属性。 同时发现在虚拟客户端对象中有一条需要推送的消息。于是就立即把这条消息推送给这个刚上线的客户端。

(3)UDP端口和服务器端口的作用与区别?

UDP端口:9966

ddpush服务器监听9966端口之后。客户端用对应的TCP或者UDP连接服务器的这个端口。服务器在收到一个客户端连接的时候。会创建一个客户端的虚拟对象。此对象会对uuid和客户机的网络id进行封装。

服务器端口:9999

ddpush在启动的时候 同时启动了一个接受推送任务的服务器 这个服务器监听9999端口。 然后 在有要推送的任务的时候。我们创建Pusher.java 这个类的对象。在这个类中。就是连接到ddpush服务器的9999端口。然后 向ddpush发送相对应的数据包。然后ddpush接受到了这个推送任务数据包。检查数据包格式、判断推送任务类型。

简单的理解就是UDP端口用以监听和获取客户端信息,DDPUsh服务器端口用以把信息推送到相应的uuid上。

(4)怎么设置uuid?使用推送时每一个用户都需要填写uuid吗?

我们知道,DDPush给我们提供了客户机端的实例,需要注册一下uuid,以便服务器给该客户机发送信息,那么,在实际开发中,每一个客户只要装这个软件,都要注册一下吗,那么重复的怎么办?其实,实际上并不是这样,每一个用户进行注册时,可以把自己的id号当做uuid,既保证了唯一性,还比较方便。

二、友盟推送:

1、原理:可以了解一下第三方推送。

2、特点:

(1)既能实现个推,还能实现单播、广播、组播,可以根据用户不同的特点进行推送信息。

(2)推送形式多样,也很灵活。既能推送通知,还能推送消息。

3、配置:(链接)http://bbs.umeng.com/thread-7067-1-1.html

(详见官方文档进行配置)

4、疑问:

(1)怎么实现个推?

可以根据设置的alias和alias_Type进行推送,也可以使用Devide_Token进行实现。设置alias和alias_Type时,友盟后台服务器会与Devide_Token进行绑定,这两者的实质是一样的。

(2)推送的原理

因为是第三方推送的原因,实际上推送信息的过程是友盟后台服务器做到的。在本地,实际上就是调用了后台服务器中的方法。

(3)服务器白名单配置

在申请应用时,需要填写对应服务器的ip,实际上该ip主要是过滤相应的服务器。如果不是白名单里面的ip,推送会无效。该IP必须是固定IP,而且是外网可以访问的ip地址。

三、DDPush与友盟推送的对比:

(1)友盟推送属于第三方推送,有一定的依赖性。但是功能比较强大。

而DDPush不属于第三方推送,DDPush服务器可以直接部署在自己的服务器所在的电脑上。

(2)推送方式与范围

四、学习收获

1、误区:

对TCP和IP协议的理解模糊。

更正:两个独立的概念,不能混为一谈。IP协议是TCP的底部协议,如果需要理解TCP协议中关于IP的详细内容,可以查看IP协议。

2、网络知识的总结

(1)把局域网IP配置成固定IP

http://jingyan.baidu.com/article/5553fa82e368c565a239348e.html

(2)局域网固定IP一定会被外网访问吗

在这里,我们先梳理两个概念,外网和内网:

内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的。

外网:即互联网,局域网通过一台服务器或是一个路由器对外连接的网络,这个IP地址是惟一的。也就是说内网里所有的计算机都是连接到这一个外网IP上,通过这一个外网IP对外进行交换数据的。也就是说,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP。(用ipconfig/all查到的IP是你本机的内网IP;在www.ip138.com上看到的是你连接互联网所使用的IP,即外网)。详细了解推荐:http://blog.csdn.net/wang379275614/article/details/7856281

那么就算把局域网中的ip改为固定ip,外网也依然不会访问的到。那么如果需要外网访问的话,就需要做外网与内网的映射。可以使用nat123做外网与内网的端口映射,可以使用外部域名访问本地ip。或者就是在路由器上进行NAT映射,配置服务器固定ip,外网能够访问。详见:http://www.webkaka.com/info/archives/knowledge/2010/10/03496/

时间: 2024-11-08 22:49:16

对于推送的理解与总结的相关文章

Jpush之如何利用HttpClient实现消息推送到手机

开心一笑 [1.再逼我,再逼我就装死给你看. 2.打死我也不说,你还没使美人儿计呢. 3.帅有个P用?搞不好还不是被卒子给吃掉. 4.别紧张,我不是什么好人. 5.够不着吧,左脚踩右脚上试试. 只为逗你一笑] 提出问题 后端如何利用Jpush极光推送消息到手机端??? 解决问题 Jpush极光文档官网 http://docs.jiguang.cn/jpush/guideline/intro/ Jpush产品简介 JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条. 开发者集成S

友盟推送里面的Alias怎么用?可以理解成账号吗?

友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息. 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档写着Alias是和设备绑定的,感觉Alias算不上是严格意义的账号.不知道其它集成过友盟推送的兄弟们是否有类似的需求,是否可以通过友盟推送提供的Alias功能来满足我们的需求? 作者:沙漠链接:http://www.zhihu.com/question/31882775/answer/5425406

彻底理解推送

一.概念 1.早期推送服务 在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一个窗口,告诉用户正在发生的事,可能是未接电话提示.日历提醒或是一封彩信.推送功能最早是被用于Email中,而目前更多地被应用于App中. 2.推送 一般地,当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,而要获取服务器上不定时更新的信息一般有两种方法: (1)客户端pull(拉)的方式,就是隔一段时间就去服务器获取一下信息,看是否有更新的信息出现,即用户主动发起请求,向服务器获取数据:

iOS 消息推送及本地通知,原理解析

在此整理了一些前辈的思路,根据自己对问题的理解及相似方面的比较做了这篇笔记,本文并未详细讲解,只是根据自己提出问题进行一个解决,希望能对大家有些帮助. 1. deviceToken与UUID,UDID的区别 deviceToken : A token that identifies the device to APS. The token is an opaque data type because that is the form that the provider needs to subm

git 学习小记之记住https方式推送密码

昨天刚刚学了点git基础操作,但是不幸的是[email protected]给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在[email protected]官网找到了解决方法<https方式使用[email protected]设置密码的方式>文中给出了几个方法,并且都非常简单. 关于 cache 缓存方式,我不太喜欢,因为要设置时间,而且会过期.而 store 相应的非常方便,设置全局后,方便多个库使用.当然如果

MQTT与Mosquitto服务器搭建以及Android推送(一)MQTT简介

文章钢要: 对MQTT协议有一定认识 对MQTT运行原理有一定了解 一.什么是MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议. 国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议.其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息. MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息

git与github的文件推送

第一步:安装git 一切next完成之后 回到我们桌面 点击右键 出现了下图的两个图标 说明安装成功了 第二步:点击我们的git Bash Here 进入命令行 完成一下我们的配置 git config --global user.name"你的用户名" git config --global user.email"你的邮箱号" 设置好后 可以通过命令git config -l (这是字母l)查看我们刚才设置的参数 第三步:创建版本库  可以在你的电脑任何创建一个文

通向高可扩展性之路(推特篇) ---- 一个推特用来支撑1亿5千万活跃用户、30万QPS、22MB每秒Firehose、以及5秒内推送信息的架构

原文链接:http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-deal-with-150m-active-users.html 写于2013年7月8日,译文如下: “可以解决推特所面临的挑战”的玩具般的方案是一个常用在扩展性上的比喻.每个人都觉得推特很容易实现.稍微具备一些系统架构的知识我们就可以构建一个推特,就这么简单.但是根据推特软件开发部门的VP Raffi Krikorian在 Timelin

服务器端消息推送

在做微信公众开发时,你是否会遇到一种需求,在某一时刻向用户推送消息,比如向用户发送一条消息,通知用户相关信息,微信开发官方文档相对简洁,对于初学者较难理解,最近做开发,遇到了类似的需求,通过各方面的学习研究,写了一些代码,这些代码在项目中正常运行,各位可以参考一下.我提供的代码是基于 PHP 的,仅供参考. 首先,pushMessage 是推送消息的函数,$APPID 是公众平台的APPID,$APPSECRET是公众平台的APPSECRET function pushMessage($tous