简单的聊天应用程序(我应该使用套接字吗?Apple应用程序商店会批准吗?)

时间:2012-07-05 21:15:05

标签: sockets app-store

我知道一个涉及“聊天功能”的应用程序,基本上是人们互相聊天的能力。因为通过服务器发送消息会很慢(如果你有新的消息,每隔一秒就检查一次服务器会非常糟糕)我希望使用套接字来实现点对点聊天能力,而不是通过服务器。

我的2个问题:

1)套接字编程是开发聊天程序的最佳方式吗?我知道有推送通知服务,但我认为它不能用于聊天程序。如果你想象有5000人聊天并且不得不每秒轮询服务器,那么通过服务器似乎有点不好。

2)Apple是否会批准具有使用套接字的点对点聊天程序的应用程序?

谢谢。

1 个答案:

答案 0 :(得分:2)

套接字确实合适。但是你最好使用客户端/服务器方法而不是P2P方法。

多年来,我一直致力于一项非常着名的即时通讯服务,但我绝对可以告诉您,只要服务器速度不慢,通过服务器的速度就不会很慢。

客户端/服务器有很多优点。也就是说,它并不像任何类型的P2P连接那样困难,因为NAT和防火墙等问题使直接套接字连接变得困难和不可靠。此外,无论如何,您都需要一个消息服务来让客户交换IP地址。

您声明客户端或服务器必须“轮询”的假设并不是可扩展系统的工作方式。您应该使用持久性TCP套接字,并通过当前存在的任何可用异步方法来查看扩展套接字服务。 Linux上的select(),poll(),epoll和Windows上的IO完成端口都是在没有定期轮询的情况下同时连接数千个套接字的技术。

我的建议 - 只需部署一个XMPP / Jabber服务器。大多数实现都可以很好地扩展到成千上万的客户端。然后你的聊天程序只是一个XMPP客户端套接字。一些Jabber服务器甚至支持HTTP连接,用于仅通过http或http代理服务器进行用户访问的情况。我曾经和Openfire一起玩过一段时间,并且得到了合理的印象。

我很确定iOS有套接字,并且Apple允许这样做。我只知道那些曾经在iOS产品上工作过的人。您可能不应该使用推送通知服务,除了通知之外,还可以唤醒您的应用程序,以确定是否需要执行此操作。

希望这有帮助。