2014-01-18 65 views
2

我试图在我的基于Java的网站上实现推送通知(使用Struts 1.x)。我们的目标是让类似于Stackoverflow和其他网站在收到消息时实时通知用户的内容。亚马逊SNS使用Java推主题

我使用mysql作为我的数据库,Apache作为我的服务器,并且正在考虑使用Amazon-SNS作为这些通知的框架,因为那是该服务的目标。

+3

我没有看到实际的问题,在这里......只有关于你在做什么的陈述。你在问什么? –

+0

我想发送推送通知从亚马逊SNS到我的网站 –

+0

@JNYRanger:如果有一个帖子有问题,请详细描述问题,而不是只发布“你有什么尝试”。关于是否可以接受“你尝试过什么”评论以及“你尝试过什么”的替代方法,请参阅[此Meta帖子](http://meta.stackexchange.com/a/172760/152134)。谢谢! –

回答

2

在“网站”上,不,这不是SNS真正做的。

SNS有两种操作模式不同:

  • “主题” - 发送广播通知网络的服务器(不是浏览器)通过HTTP(S),电子邮件地址,SQS队列组合,和短信设备(短信),已确认他们订阅的SNS主题
  • “移动推” - 直接(不直接向网络浏览器)发送寻址推送通知给你写的移动应用

对于实时通知到浏览器,看看该页面的源代码你看,现在对于它是如何做一个提示:

<script type="text/javascript"> 
StackExchange.ready(function() { 
    StackExchange.realtime.init('wss://qa.sockets.stackexchange.com,ws://qa.sockets.stackexchange.com'); 
    StackExchange.realtime.subscribeToInboxNotifications(); 
    StackExchange.realtime.subscribeToReputationNotifications('1'); 
    StackExchange.realtime.subscribeToTopBarNotifications('1'); 
}); 
</script> 

这看起来像一个websocket连接,鉴定wss:// (与https://对比)。有各种各样的语言的websockets的实现,允许你的一个组件与在浏览器上运行的javascript进行交互,并且我建议这是最接近标准机制的推送通知到现代web浏览器。

SNS没有为浏览器提供这种集成的功能集,尽管它可能是内部用来将消息从应用服务器转发到websocket网关的功能,因为SNS可以提供应用程序服务器和网关之间的短期缓冲区,或者将消息广播到多个网关的能力,如果这是您实现它的方式......类似这样的优点是,它会阻止应用程序服务器如果网关过载或离线,则会受到不利影响。理论上,websockets可以由应用程序服务器本身终止,因为它们通过HTTP开始连接,但与http请求相比,典型websocket连接的寿命较长,可能会使其成为一个不好的组合。