2

我要为朋友在 ASP.NET 中编写一个 Ajax 聊天 Web 应用程序,我有一个问题:如果 client1 向 client2 发送消息,应用程序应该如何向 client2 发送消息?有没有比向服务器发送请求更好的方法,“询问”是否有新消息?是否可以直接将消息发送给客户端?

4

3 回答 3

1

您可以做的最好的事情是使用Persistent HTTP Connection谷歌在其GMAIL网站上使用 Google Talk 的方式。

于 2009-11-07T14:11:19.427 回答
0

请记住,HTTP是一种无状态协议,并且每个事务都是从客户端到服务器的。

服务器可以使用会话来确定该客户端是否“已知”,但至于使用普通的旧 HTTP 将信息发送回客户端,我认为这是不可能的(我的意思是来自服务器发起的连接,而不是对客户端的响应)

您需要使用 Javascript 来轮询服务器以获取信息。

如果你想反过来,你可能会使用 Java 或 Flash,但你还需要考虑 NAT 隧道、代理服务器和客户端可能使用的任何其他奇怪的设置。

于 2009-11-07T14:09:43.110 回答
0

不,我不认为服务器可以向客户端的浏览器发送消息。这是我实现聊天应用程序的方式:

  1. client1 通过 Ajax 向服务器发布消息
  2. 服务器将其保存到存储库(我在这种情况下使用单例对象)
  3. client2 从存储库中获取消息
  4. 将邮件标记为已读

一旦聊天会话关闭或过期,我会将聊天日志保存到数据库中。

于 2009-11-07T14:10:18.583 回答