我必须开发一个多用户聊天应用程序(如msn)。我不知道如何使用任何框架来构建它,因为我想了解这些工作是如何工作的。
我正在使用Delphi或C#进行开发,但这并不重要。重要的是聊天客户端将成为一个应用程序,而不是一个浏览器。
问题是:在客户端之间处理消息的最佳方式是什么?
到目前为止,我知道这些技巧:
Pushlet
轮询
长轮询
Link到维基百科
答案 0 :(得分:3)
看起来所有这些对HTTP都很有用,因为HTTP并不真正允许连接永久打开。如果您正在编写使用Ajax(或无论如何都是REST调用)的基于Web的聊天客户端,那么这就是您的选择。
如果您自己编写聊天应用程序(P2P或客户端/服务器),则可以创建永久保持打开状态的连接。
因此,服务器只是侦听给定的端口。客户端尝试连接到服务器IP地址上的该端口。如果连接成功,它将保持打开状态,直到客户端用户关闭程序(如果一切顺利)。
Delphi确实有一个使用Indy TCP组件的聊天应用程序演示。你可以在那里冒险,即使你之后要自己建造它。
答案 1 :(得分:2)
你需要支持(数十万)数千个同时连接吗?如果是的话,我建议你看看
用于应用程序服务器和Servlet 3.0等标准,以最大限度地减少工作线程数并加快网络运行
Delphi有一个IOCP库 - 请参阅Is there a I/O completion port based component for Delphi?
此外,HTTP可以用作内部协议,新的Microsoft http.sys库提供了一个很好的基础,并且包含在新版本的Windows中。
为了给消息服务器提供高效率的印象:在相对适中的硬件上,开源ActiveMQ Apollo服务器每秒可处理120万条消息。 (它是用Java编写的)