RamosLi / dbay-apns-for-java

High performance Java client for APNS(Apple Push Notification Service)
Apache License 2.0
238 stars 152 forks source link

有多应用,多证书ApnsServiceImpl创建的问题 #8

Open lizhitao0923 opened 10 years ago

lizhitao0923 commented 10 years ago

RamosLi,我的系统要向多个应用推送消息,每个应用都有一个证书,请问我是不是要为每个要推送消息的应用都生成一个ApnsServiceImpl实例?

RamosLi commented 10 years ago

对,每一个证书对应一个ApnsServiceImpl实例,注意还需要调用下apnsConfig.setName(),给每个设置成不同的名称就OK了

lizhitao0923 commented 10 years ago

回复的真快,给力!不设置apnsConfig.setName()名称会出现怎样的问题?

lizhitao0923 commented 10 years ago

如果我将ApnsServiceImpl的实例放到一个Map当中,长时间不用后取出来还能连上apns服务器吗,会不会自动断掉?

RamosLi commented 10 years ago

嗯,你完全可以把ApnsService的实例放到map里管理。TCP连接断掉后会重新连接,所以能确保发送成功

lizhitao0923 commented 10 years ago

谢谢~!我还请教一个问题,官网说“应该保持一份连接多个通知的APNs的链接。APNs会把多次并重复尝试建立的连接是为DOS攻击服务而拒绝建立链接”,这个指的是不多次SSLContext context = SSLContext.getInstance(protocol);初始化吗?因为我看你的程序当中每次发送消息的socket都关闭了。

RamosLi commented 10 years ago

你再仔细看看吧,一条连接建立后会重复使用,直到出错或者IDLE超过一定时间才会重新建立。你是不是每发送一条,就调用了shutdown啊? shutdown是在Java进程退出时调用,或者不调也可以。