我正在尝试在网络上实现自定义实时聊天程序,但我不确定如何为用户处理实时(或接近实时)更新。每隔一秒左右从客户端发送 Ajax 请求,轮询数据库以获取新评论是否更有意义?
每次添加评论时,有没有办法以某种方式从数据库中广播?如果这是可能的,那将如何工作?我正在使用带有 Asp.net (c#) 的 Sql Server 2008。
谢谢!
我正在尝试在网络上实现自定义实时聊天程序,但我不确定如何为用户处理实时(或接近实时)更新。每隔一秒左右从客户端发送 Ajax 请求,轮询数据库以获取新评论是否更有意义?
每次添加评论时,有没有办法以某种方式从数据库中广播?如果这是可能的,那将如何工作?我正在使用带有 Asp.net (c#) 的 Sql Server 2008。
谢谢!
您可以让每个客户端轮询服务器,并在服务器端保持连接打开而不响应。
一旦在服务器端检测到消息,该数据就会通过已经打开的连接返回。收到后,您的客户会立即发出新请求。
有一些复杂性,因为您需要跟踪服务器端哪些连接与哪个会话相关联,以及应该响应哪些连接以防止超时。
我实际上从未这样做过,但这应该是最节省资源的方式。
使用长轮询/服务器端推送/彗星:
http://en.wikipedia.org/wiki/Comet_ (编程))
另见: http ://en.wikipedia.org/wiki/Push_technology
我认为当您使用长轮询时,您还希望您的 Web 服务器以非阻塞 io 的形式为请求提供一些支持,这样您就不会为每个连接保留一个线程。
没有。使用 RabiitMq 或 ActiveMQ 等排队系统。也检查 mongoDB。
排队系统将提供 ua 发布 - 订阅设施。