2015-01-16 72 views
0

我正在创建一个类似viber的应用程序,即android用户可以在其android设备上使用即时消息。我已经使用ASP.NET创建了客户端到服务器的Web服务(具有JSON响应的ASMX服务),它的工作方式就像一个魅力,但另一方面,即服务器到客户端的请求只是有点头疼。当然,我可以制作我的应用程序,以便不需要服务器到终端的请求(在短时间内从客户端发送虚拟请求到服务器),但这样服务器会在用户数量增加时特别过载。我发现了一些关于即时消息的技术,包括GCM和XMPP。我的其他选择是什么?或者让我问一下我最好的选择是什么? 我应该使用套接字吗?如果是这样,我怎么能始终拥有我的客户IP(考虑到客户是可能使用WiFi或GPRS/3G/4G互联网的移动用户)。我正在考虑一个系统,在这个系统中,我的客户每隔n秒发送一次IP(n可以大约为30),所以服务器总是有一个(近乎)最新的客户IP列表。 这样做是可能的还是合乎逻辑的?将数据从ASP.NET发送到android

回答

0

使用长轮询的好老的策略始终是可能的,但也有很多更好的方法现在就做。这可能是所提到的最快实现(不是如果你想正确实现它,并且在你的服务器/数据库引擎上负载最小)。我已经看到了一些围绕该体系结构开始的项目,并希望在未来转向更好的事情......并且当下的动作永远不会出现。如果你开始浏览你的Android手机连接到像查尔斯这样的代理服务器,你会看到我的意思:)

WebSockets是一个选项,但我没有看到我将它用于类似Viber的原因应用程序,它是基于事件的(您收到了一条消息),而不是“实时”(例如监视某些股票图形移动)。

这里最好的选择是a Google Cloud Messaging (GCM)!无论是在后端还是在客户端上都很容易实现,它专门针对有问题的连接性构建(在wifi/poor 3g/4g/etc之间切换)。它具有一些相当不错的功能,其他方法不提供“开箱即用”功能 - 消息重新发送(客户端失去连接的常见场景--GCM稍后会在他上线时发送推送通知),自动在设备(智能手机,平板电脑等)和其他设备之间进行同步。

+0

对不起,我有完全相同的问题。我也觉得投票会在流量增加时阻止资源。有些人说使用推送通知?你尝试过GCM吗?你觉得@Ali_dotNet怎么样?什么最适合你?我基本上感兴趣的Asp.Net连接到我的Android设备,任何成功/提示? – user3833732

+1

推送通知与GCM完全相同:)确切地说,GCM代表Google云消息传递,基本上是您用于实施推送通知的基础架构。毫无疑问这个,肯定会去GCM! – Vesko