【问题标题】:How to know if the other user is now writing a message in web chat website?如何知道其他用户现在是否正在网络聊天网站上写消息?
【发布时间】:2011-08-01 19:11:30
【问题描述】:

我正在一个 ASP.Net MVC 网站中构建一个聊天系统,我希望用户查看其他聊天用户现在是否正在写消息。

和 gtalk 或 msn 中显示的一样,当其他用户开始写入时,它会说:“userA is writing ....”然后当用户停止时它会隐藏此消息。

在网站上实施此功能背后的概念是什么,以正确的方式构建它我应该知道什么?

【问题讨论】:

  • 这个概念是,对于每一次 n 按键,您都会向服务器发送一个 ajax 请求,服务器又会将其推送到所有其他客户端。类似于 Google 等网站在您键入时自动完成的方式。

标签: c# javascript asp.net-mvc chat


【解决方案1】:

这一切都是通过 AJAX 完成的

用户1在写入开始时立即向服务器发送writing=true值,并在提交消息时向服务器发送writing=false

User2 每x 秒轮询一次服务器以查看if(writing){display "User1 is writing a message"}

这显然是两种方式,因此 User1 和 User2 都在从服务器推送和拉取 writing 布尔值。

我建议在这个过程中使用 jQuery 和 JSON。

【讨论】:

    【解决方案2】:

    为您的编辑文本查找“更改中”(或等效项)。当它发生时启动一个计时器并向聊天服务器发送一条 ajax 消息以通知他们。当文本提交或计时器用完时,清除消息。

    【讨论】:

    • 它需要在按键或变体上,因为 on change 通常只有在输入失去焦点时才会触发。
    【解决方案3】:

    客户端,将计时器计数设置为 500 毫秒,并将变量 sentState 设置为 false。

    每当客户端键入内容时,重置该计时器,如果 sendState 是,则向服务器发送 AJAX 请求,指示客户端正在键入。最后,将 sendState 设置为 true。

    如果计时器达到 500 毫秒,则向服务器发送 AJAX 请求,指示客户端不再键入并将 sendState 设置为 false。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多