1

我有一个涉及“聊天功能”的应用程序的想法,基本上是人们相互聊天的能力。由于通过服务器发送消息会很慢(另外,如果您有新消息,必须每秒检查一次服务器会很糟糕)我想使用套接字来获得点对点聊天功能,而不是通过服务器。

我的2个问题:

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

2) Apple 在批准具有使用套接字的点对点聊天程序的应用程序时会遇到问题吗?

谢谢你。

4

1 回答 1

2

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

在一个非常知名的即时消息服务上工作了很多年,我可以绝对告诉你,通过服务器并不慢——只要你的服务器不慢。

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

您所说的客户端或服务器必须“轮询”的假设不是可扩展系统的工作方式。您应该使用持久的 TCP 套接字,并考虑通过目前存在的任何可用异步方法来扩展套接字服务。Linux 上的 select()、poll()、epoll 和 Windows 上的 IO Completion Ports 都是无需定期轮询即可同时连接数千个套接字的技术。

我的建议 - 只需部署 XMPP/Jabber 服务器。大多数实现都可以很好地扩展到数千个客户端。那么你的聊天程序只是一个 XMPP 客户端套接字。对于用户只能通过 http 或 http 代理服务器进行访问的情况,一些 Jabber 服务器甚至支持 HTTP 连接。前段时间我玩过Openfire,印象深刻。

我相当肯定 iOS 有套接字,而且它是苹果允许的。我只从从事 iOS 产品工作的人那里得到二手信息。您可能不应该将推送通知服务用于通知来唤醒您的应用程序需要做的事情之外的任何事情。

希望这可以帮助。

于 2012-07-06T04:38:22.953 回答