适用于iPhone聊天应用的TCP / IP与Web服务

时间:2011-04-09 08:22:31

标签: c# iphone objective-c ios

嘿伙计们,我想知道您对如何为iPhone创建NATIVE聊天应用程序的看法。到目前为止,我们一直在探索一些选择:

1)使用php或其他基于Web的语言创建Web服务,并让应用程序连接到该服务。唯一的问题是我们无法弄清楚如何用这种方式创建“推送”消息,用户不必经常刷新对话。

2)在Windows Azure等服务器上托管应用程序,该服务器将使用TCP / IP与iPhone应用程序进行通信。通过这种方式,只需将数据包发送到iPhone就可以实现“推送”消息传递。但是,我们以前从未这样做过,也不知道我们是否会遇到任何不可预见的坑洼。

你们之前有没有制作过这样的应用程序?如果是这样你是怎么做的?如果没有,你会推荐什么方法?

提前谢谢!

编辑: 要准确告诉您我们要做的事情:我们需要创建一个应用程序,用户可以加入聊天室并从该聊天室发送/接收消息。还有自定义功能,例如用户将拥有自己的配置文件等。我们也希望尽可能灵活,以便我们可以将其集成到其他平台,如Android和黑莓。

所以基本上我坚持的部分是来自聊天室的发送/接收消息。我们应该使用哪种技术服务器端?

3 个答案:

答案 0 :(得分:2)

有一个开放套接字的东西,比如Socket.IO可以工作。 Node.js是一个很好的服务器端框架。这是一个相关的SO问题:iPhone Objective-C socket communication with Socket.IO

修改 自发布此答案后问题已经改变 - 最初询问有关网络应用的问题。另外,最初的问题并不清楚,你想要的服务器端的答案多于客户端。

在服务器端,我仍然会推荐Node.js - 听起来你想要使用C#,这让我想知道你为什么要再次询问使用哪种服务器端技术。大多数语言将为您提供将套接字连接到客户端并访问数据库的方法,这是您想要发出的应用程序的两个主要要求。使用您熟悉的任何语言。但是,有些库可能会为这种类型的通信提供方便 - Node.js和Ruby on Rails(如果你想做一个基于轮询的解决方案,会更有用)

查看http://code.google.com/p/cocoaasyncsocket/有关从iPhone进行套接字通信的好库,而无需深入研究低级功能。

答案 1 :(得分:2)

我已经好几次了。扩展到100K并发用户并非易事。如果你想要一个现成的系统,我怀疑ejabberd可能会做你想要的。虽然协议IMHO过于冗长,并且使用的带宽远远超过必要的带宽。

如果您想编写自己的解决方案并且可以灵活地编写自己的协议并在将来具有最大可扩展性,那么请使用允许您跨多个服务器分发应用程序的语言。从开始就更容易,而不是编写单个服务器解决方案,然后必须追溯性地使其可分发。

在c ++,Java和Erlang中编写这样的服务器我会说最简单,最相关的工具是Erlang。它充分利用了多核处理器,并且设计良好,便于在多个服务器上进行分发。 C ++是最难的!

我还使用Java和JETTY和RabbitMQ等工具编写了一个高度可扩展的系统,需要使用HTTP作为协议。

我个人更喜欢自定义二进制协议,因为它允许您将带宽降至最低,并避免DOS攻击,例如协议定义良好,长度在数据包之前发送,而非二进制协议需要解析因为他们进来了,不知道数据包有多大。

答案 2 :(得分:1)

为什么不首先尝试XMPP协议? XMPP基于TCP / IP。

有几个OpenSource服务器解决方案,客户端和应用程序库。 XMPP已经支持聊天室服务。您可以轻松定义扩展名。