导航:首页 > IDC知识 > 推送消息服务器吗

推送消息服务器吗

发布时间:2020-10-11 20:17:06

1、消息服务器mq可以开发OA中消息推送的功能吗

消息服务器mq不是用来实现这种功能,这个消息服务器是在应用程序之间沟通信息使用的,比如:在分布式设计中,网店系统和会员管理系统是分开的,在网店程序上购买了商品,需要通知会员管理程序进行积分,这时候就需要用到消息服务器来确保消息能可靠送达。
如果是要实现消息推送到手机,可以看看腾讯云、阿里云等等,他们都提供了移动消息推送服务,一定程度内使用是免费的。

2、像个推这类的消息推送服务,他们的推送系统是怎么样的呢?

组成个推推送系统的几个要素:1. 个推SDK:以jar的方式出现,集成于第三方客户端,解析第三方下行的数据,并把结果透传给第三方客户端。2. 个推服务器:一侧负责维护与成千上万的个推SDK的长时连接,另一侧与第三方服务器对接,将第三方定制数据下行推送至个推SDK。3. 第三方服务器:数据推送的发起者,通过对接个推服务器,将数据发送至第三方客户端。4. 第三方客户端:第三方集成个推SDK的客户端,推送数据正真的接收者和展现者。像个推这类的消息推送服务,他们的推送系统是怎么样的呢?

3、电脑要接收服务器推送的消息,必须要开放哪些端口?

1、首先, 为了计算机的安全在设置共享目录的时候, 我们最好要为每个共享目录都设置允 许访问的用户名和密码。
2、接着,我们通过以下步骤使得“Internet 连接防火墙”和“网络共享”可以和平共处。 在控制面板的“网络连接”中点击右键,在弹出菜单中选择“属性”。在属性对话框中选择 “高级”选项卡,然后点击“设置”按钮。弹出“高级设置”页面。 在高级设置页面中, 我们看到列出了几种常用的网络服务, 但是这里并没有我们要使用 的“网络共享”规则,所以我们需要添加规则。点击“添加”按钮,弹出“服务设置”页面。
3、在页面中依次输入如下内容:
服务描述:文件共享 端口号
计算机名称和 IP 地址:127.0.0.1
此服务的外部端口号:端口号
此服务的内部端口号:端口号
4、这里的端口号依次是:135,136,137,138,139,445,即依次要输入 6 次。 上面设置的是 TCP 服务,但我们还需要使用 UDP 服务,所以我们还要按照前面的步 骤在输入 6 次,只是把图 2 页面中所示的选中 TCP 改成选中 UDP。
5、经过以上设置,你会发现“Internet 连接防火墙”和“网络共享”已经可以和平共处了。

4、使用第三方消息推送是使用客户端直接请求好还是用服务器请求好

推荐让服务端在接收到评论后, 调用个推推送接口进行推送。服务器并发量高,用服务器的话响应快,这样可以解决延时性的问题

5、ios 推送是建立在 苹果推送服务器吗

方法/步骤

在developer.apple.com的member center设置AppId属性,
enable push.

在developer.apple.com的member center创建APN证书,
Development -> Apple Push Notification service SSL (Sandbox) 用于沙盒app
Proction -> Apple Push Notification service SSL 用于AppStore app
创建完毕后,可以第一步AppId的属性列表中查看到证书名称

基于第1步修改的AppID重新生成provision file,
在iOS Project中加载此provision file,
这样编译出的app才可以获取到device token(推送唯一标识符)

以下为针对服务端的推送设置步骤--------
在keychain中找到第1步创建的APN证书,
展开此证书,分别导出证书和密钥,
名称设为cer.p12和key.p12

打开控制台程序,
使用openssl 将cer.p12及key.p12转成cer.pem和key.pem
命令如下:
$ openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12
$ openssl pkcs12 -nocerts -out key.pem -in key.p12
测试生成的cer.pem及key.pem是否可用
$ openssl s_client -connect gateway.push.apple.com:2195 -cert cer.pem -key key.pem
注:gateway.push.apple.com:2195用于appStore app;
gateway.sandbox.push.apple.com:2195用于沙盒app;
以上命令执行后会打印一大罗信息,最后处于可输入状态,打几个字符回车后自动断开连接即为正常。
合并cer.pem及key.pem
$ cat cer.pem key.pem > ck.pem
上传ck.pem到推送服务器的推送程序的目录。
Tip:-----------------------
find / -name "*.php"
查询推送服务器php文件目录用。
scp ~/Desktop/ck.pem [email protected]:/var/www/html
用于上传本地文件到Linux服务器用。
9
服务器php代码加载ck.pem向苹果服务器推送消息:略
客户端oc代码获取token,接收推送消息:略

6、如何实现消息推送功能

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的
和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的时间对Android的推送通知服务进行初步的研究。

在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务,起初我就是准备采用这个服务来实现自己手机上的推送功能。

Android Cloud to Device Messaging
(C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用

程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些
消息。

但是经过一番研究发现,这个服务存在很大的问题:

1)C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;

2)C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,如果想要很好的使用,我们的App Server必须也在国外,这个恐怕不是每个开发者都能够实现的;

有了上述两个使用上的制约,导致我最终放弃了这个方案,不过我想利用另外一篇文章来详细的介绍C2DM的框架以及客户端和App Server的相应设置方法,可以作为学习与参考之用。

即然C2DM无法满足我们的要求,那么我们就需要自己来实现Android手机客户端与App Server之间的通信协议,保证在App Server想向指定的Android设备发送消息时,Android设备能够及时的收到。下面我来介绍几种常见的方案:

1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。

2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法,我就见过采用这个方案的

应用程序。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,你很难找到免费的短消息发送网关,关于这个方案的实现,可以
参考如下链接:https://labs.ericsson.com/apis/mobile-java-push/。

3)持久连接:这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。Apple的推送服务之所以工作的很好,是因为每一台手机仅仅保

持一个与服务器之间的连接,事实上C2DM也是这么工作的。不过这个方案也存在不足,就是我们很难在手机上实现一个可靠的服务。Android操作系统允
许在低内存情况下杀死系统服务,所以你的通知服务很可能被操作系统Kill掉了。

前两个方案存在明显的不足,第三个方案也有不足,不过我们可以通过良好的设计来弥补,以便于让该方案可以有效的工作。毕竟,我们要知道GMail,GTalk以及GoogleVoice都可以实现实时更新的。

Ø 采用MQTT协议实现Android推送

MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。

我们可以从这里下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现。

架构如下所示:

wmqtt.jar 是IBM提供的MQTT协议的实现。你可以从如下站点下载它。你可以将该jar包加入你自己的Android应用程序中。

Really Small Message Broker (RSMB) ,他是一个简单的MQTT代理,同样由IBM提供。缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备。

SAM是一个针对MQTT写的PHP库。你可以从这个下载它.

send_mqtt.php是一个通过POST接收消息并且通过SAM将消息发送给RSMB的PHP脚本。

实例代码:

可以从GitHub上下载实例应用。运行该应用以后,通过手机浏览器访问http://toku.com/demo/android-push/,在第一个输入框输入设备ID,在第二个输入框输入想要发送的消息内容,按下“Send Push Message”按钮,你就应该可以看到手机上收到了通知了。你也可以从这个GitHub地址上下载android-push源代码,它包含了send_mqtt.php脚本。

Ø 采用XMPP协议实现Android推送

这是我在项目中采用的方案。事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。

XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。

androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。经过源代码研究我发现,该服务器端基本是在另外一个开源工程openfire基础上修改实现的,不过比较郁闷的是androidpn的文档是由韩语写的,所以整个研究过程基本都是读源码。它的实现示意图如下:

androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,
不过我们不需要自己编译,可以直接把androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的
XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。

androidpn服务器端也是java语言实现的,基于openfire开源工程,不过它的Web部分采用的是spring框架,这一点与
openfire是不同的。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的
XMPPConnection类进行通信,作用是用户注册和身份认证,并发送推送通知消息。另外一部分是Web服务器,采用一个轻量级的HTTP服务器,
负责接收用户的Web请求。服务器架构如下:

最上层包含四个组成部分,分别是SessionManager,Auth
Manager,PresenceManager以及Notification
Manager。SessionManager负责管理客户端与服务器之间的会话,Auth Manager负责客户端用户认证管理,Presence
Manager负责管理客户端用户的登录状态,NotificationManager负责实现服务器向客户端推送消息功能。

服务器端界面如下,分别对应了上述的几个功能模块:

发送以后,我们可以在手机端看到接收的消息:

这个解决方案的最大优势就是简单,我们不需要象C2DM那样依赖操作系统版本,也不会担心某一天Google服务器不可用。利用XMPP协议我们还可以进一步的对协议进行扩展,实现更为完善的功能。
采用这个方案,我们目前只能发送文字消息,不过对于推送来说一般足够了,因为我们不能指望通过推送得到所有的数据,一般情况下,利用推送只是告诉手机端服务器发生了某些改变,当客户端收到通知以后,应该主动到服务器获取最新的数据,这样才是推送服务的完整实现。

7、怎么实现服务器给android客户端主动推送消息

采用MQTT协议实现Android推送功能是一种解决方案。MQTT是一个轻量级的消息发布/订阅协议,是实现基于手机客户端的消息推送服务器的理想解决方案。 

常见的解决方案实现原理:

1、轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

2、SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。

3、持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。

(7)推送消息服务器吗扩展资料:

推送消息注意事项:

1、支持第三方推送内容,是要客户端和服务器都支持的,客户端和服务器都导入推送SDK。

2、服务器推送内容,可以精确指定推送时间,推送的具体接收人,用户群,位置。

3、即推送的维度可以使时间,位置,人群。

4、极光使用了两种不同的通知方式,一种是推送通知,一种是推送消息。

5、如果要使用androidpn,则还需要做大量的工作,需要理解XMPP协议、理解Androidpn的实现机制,需要调试内部存在的BUG。

参考资料来源:网络-服务器

参考资料来源:网络-Android客户端

参考资料来源:网络-信息推送

8、推送信息的APP需要什么样的服务器

推送的基本原理其实类似,其实就是通过手机和服务器之间的Socket维持一个TCP长连接,通过这个长连接来实现服务器和客户端之间的通信。所以推送服务的提供商都会同时提供一个库来供第三方引用,这个嵌入的库会帮助第三方应用维护和服务器之间的连接,包括权限校验,断开重连等的工作。这样暴露给第三方开发者的就是一个简单的接口了,开发人员不必关心网络的断开与重连,以及心跳检测等各种复杂的技术问题。当然,除此以外,这些潜入的库往往还会封装一些其他的接口,比如帮助你收到消息后显示在通知栏,展示页面,甚至激活你的应用,传递数据到应用并显示在应用中的某个界面等。这些功能都可以极大的简化app开发的工作,有人问我推送和短信有什么区别,我想这些扩展的功能就是和短信最大的区别吧。至于,之前那个朋友使用HTTP方式轮询之所以会出现耗电耗流量的情况也是有原因的,因为HTTP请求最终其实还是通过TCP协议实现的,只不过它的TCP连接是短连接,握手非常频繁,所以自然就比较耗电,而且HTTP方式是基于文本方式进行通信的,因此协议冗余比较大,流量消耗自然就大了。而且轮询方式带来的问题是,在两次轮询之间的时间间隔内是没办法拿到服务器下发的消息的。因此,实时性会大打折扣。而长连接就没有这些问题,而且还有个好处,就是当你的应用即使不活跃也没关系,你也可以有办法触达,提升活跃度。当然,长连接也会有它的问题,就是开发的难度较大。而且,手机应用的一个特点是移动,大家都是带着手机跑的。所以,当你跑进电梯或者隧道的话,如果信号不好连接就会断掉,这个时候程序就得重新连接,这就无形中增加了这个东西的难度。

与推送消息服务器吗相关的知识