显示键入时键入的字符(即时)

Posted

技术标签:

【中文标题】显示键入时键入的字符(即时)【英文标题】:Show characters typed while typing (on the fly) 【发布时间】:2011-05-08 00:47:03 【问题描述】:

在 Google Wave 的介绍视频中,他们谈到了网络应用程序中的聊天问题。在许多 Web 应用程序中,您会看到如下消息:<name> is typing..(在提交消息之前)

Google 想出了一个“在输入时显示输入的每个字符”的想法,以避免出现这种烦人的信息。

你如何创造这样的东西?

【问题讨论】:

你可以做很多事情,事件keyup你可以对后端进行ajax调用并显示结果,我在www.art.com上实现了相同的,在搜索框中输入三个字符,你会看到结果。如果您想了解更多详细信息,可以问我,我会详细解释 对不起,这不是我要找的。​​span> 【参考方案1】:

如果我正在编写解决方案,我会使用 php 套接字并使用更适合这种情况的 UDP 协议。 UDP 协议不可靠,但比最常用于通信的 TCP 快得多。所以我想我会有一个非常轻量级的 PHP 脚本,它会使用 UDP 将几个字节的数据发送到处理服务器。使用 AJAX 将数据发送到 PHP 脚本。当然会有延迟,但是 UDP 会大大加快交易速度。

【讨论】:

UDP 有损。作为多媒体传输它很好。但是,使用文本时,您不希望收到这样的消息:见鬼! 当消息被“提交”时,整个聊天消息将使用 TCP 传输,但是当用户键入时,UDP 将是完美的。 UDP 可能有损,但好处是您可以以低成本快速发送许多数据包。 有谁知道 Google 使用的是哪种协议?而且我怀疑谷歌正在使用 PHP。 我认为 Google 不会发布此类信息,但您可以使用网络嗅探器轻松找到。 @Samuel,我刚刚发现:waveprotocol.org,猜猜看.. Wave 是开源的 :-)【参考方案2】:

您可以在浏览器和服务器之间使用某种形式的双向通信。因此,浏览器将与服务器通信每个已键入的字符,并且服务器将该事件发送给所有其他浏览器。这可以通过主要称为Comet 或反向Ajax 的各种技术来完成,在html5 中可以通过WebSockets 来完成。这是Comet server implementations的列表。

【讨论】:

以上是关于显示键入时键入的字符(即时)的主要内容,如果未能解决你的问题,请参考以下文章

键入时的 Android 搜索列表

显示来自多个单独输入的键入字符

对于键入的单个字符,SearchView 提示未显示

从键盘键入任意一个字符,判断该字符是英文字母(不区分大小写)数字字符还是其它字符。

从键盘键入任意一个字符,判断该字符是英文字母(不区分大小写)数字字符还是其它字符。

键入另一个字符时如何插入一个字符