【问题标题】:Is polling the way to go for live chat on web?投票是在网络上进行实时聊天的方式吗?
【发布时间】:2011-10-19 18:13:48
【问题描述】:

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

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

谢谢!

【问题讨论】:

标签: asp.net sql-server-2008 polling broadcast livechat


【解决方案1】:

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

http://en.wikipedia.org/wiki/Comet_(programming))

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      排队系统将为您提供发布-订阅功能。

      【讨论】:

      • 这没有任何意义。 Web 浏览器应该如何将消息直接发布到远程消息队列?
      • 如果你愿意,你甚至可以用 javascript 来做到这一点。 ActiveMQ 有一个 javascript 库。
      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多