我们有一个客户端,它需要从服务器获取交互式消息,这些客户端分布在世界各地的各种防火墙后面,各种端口都关闭了。我们唯一可以依赖的是 HTTP 端口 80(和 HTTPS 443)。
该设计基本上以 XMPP(Jabber 协议)为蓝本,使用我们的客户端和 IIS。客户端向 .NET 处理程序发出 GET 请求;处理程序将请求保持打开一段时间以查找消息。如果有任何消息到达,它们会立即发送给客户端;如果不是,则在超时后,连接会以“无数据”响应关闭。客户端立即重新打开通信。
嗯,理论上。
实际发生的情况是,首先,IIS 不能同时处理超过 100 个请求——其他请求都在排队,并且在“已连接”和 IIS 识别到客户端调用之间可能会有几分钟的延迟。其次,大约一半的时间客户端超时,服务器没有任何响应(客户端超时比服务器长五分钟)。
POST 始终有效。在同一 Web 服务器上提供的其他数据可以正常工作。Web 服务在同一台服务器上工作。这是 Windows 2K3 Server 上的开箱即用安装。
是否有我们缺少的配置选项,或者我应该看看其他什么来解决这个问题?
谢谢。