1

我正在尝试在网络上实现自定义实时聊天程序,但我不确定如何为用户处理实时(或接近实时)更新。每隔一秒左右从客户端发送 Ajax 请求,轮询数据库以获取新评论是否更有意义?

每次添加评论时,有没有办法以某种方式从数据库中广播?如果这是可能的,那将如何工作?我正在使用带有 Asp.net (c#) 的 Sql Server 2008。

谢谢!

4

3 回答 3

2

您可以让每个客户端轮询服务器,并在服务器端保持连接打开而不响应。

一旦在服务器端检测到消息,该数据就会通过已经打开的连接返回。收到后,您的客户会立即发出新请求。

有一些复杂性,因为您需要跟踪服务器端哪些连接与哪个会话相关联,以及应该响应哪些连接以防止超时。

我实际上从未这样做过,但这应该是最节省资源的方式。

于 2011-10-19T18:20:24.493 回答
2

使用长轮询/服务器端推送/彗星:

http://en.wikipedia.org/wiki/Comet_ (编程))

另见: http ://en.wikipedia.org/wiki/Push_technology

我认为当您使用长轮询时,您还希望您的 Web 服务器以非阻塞 io 的形式为请求提供一些支持,这样您就不会为每个连接保留一个线程。

于 2011-10-19T18:20:26.880 回答
0

没有。使用 RabiitMq 或 ActiveMQ 等排队系统。也检查 mongoDB。

排队系统将提供 ua 发布 - 订阅设施。

于 2011-10-19T18:19:46.127 回答