实现网络聊天,我如何获得打字状态?

时间:2010-05-08 09:17:17

标签: javascript-events

有人可以说明如何使用javascript获取对方的输入状态吗?

更新

有人可以推荐一对一的开源聊天应用程序,最好用PHP编写吗?我只找到了所有在线人聊天的开源聊天室,但我只需要一对一的聊天。

6 个答案:

答案 0 :(得分:3)

以下是PHP-based open-source instant messaging software的列表。

其中一些可能与您相关。

答案 1 :(得分:1)

这是一个更新,以反映OP问题的重大变化:

谷歌聊天和Facebook都使用XMPP(jabber)服务器,我所知道的大多数公司都使用内部即时消息。

关于XMPP的一个好处是,您可以获得所有“正在输入”和其他基于presence的信息,而无需在javascript中自行滚动(请记住,您仍然需要使用javascript将XMPP请求传递回服务器,但XMPP具有您已经内置的大部分功能。)

结帐OpenFire。这是一个很棒的XMPP服务器,完全开源,他们有一个基于Web的Spark客户端版本非常好。

或者您可以获得XMPP的PHP库(有一些)。但是你仍然需要在后台运行XMPP服务器才能使用PHP。

以下是来自XMPP libraries for PHPXMPP.org列表:

  • 艾菲尔
  • JAXL
  • Lightr
  • 太太
  • XMPPHP

或者,如果你想保留主要是浏览器方面的东西,他们也有一个libraries for javascript列表:

  • dojox.xmpp
  • js.io
  • JS​​JaC
  • strophe.js
  • xmpp4gwt
  • xmpp4js

答案 2 :(得分:1)

请参阅 http streaming 以及此处的一些现成解决方案:http://ajaxpatterns.org/HTTP_Streaming

这就是谷歌谈话的方式。并且有现成的php或c ++解决方案

这对我来说很安静!

答案 3 :(得分:0)

例如,如果您有一个文本区域#chat,那么您可以使用此代码附加事件:

document.getElementById('chat').addEventListener('keydown', FUNCTION HERE, false);

答案 4 :(得分:0)

我不久前制作了一个小型聊天应用程序,唯一的方法就是频繁检查聊天数据库中的新条目,并获取比上次显示的消息更新的内容。与此同时,您可以检查用户的输入是否为空。如果是的话,什么都不做。如果不是,请在该用户名旁边的数据库中输入状态代码。如果您在获取有关新邮件和在线人员的信息时,数据库中有此状态,则应显示“用户正在键入”消息。我希望这是有道理的......如果不是,请告诉我。

答案 5 :(得分:0)

对于User1:如果您在每次按键时将聊天消息保存到数据库,状态为:sent = false并更新上次更新的日期。 对于User2:您可以定期查看是否存在已发送= false的消息,并使用上次更新来更新用户正在键入消息。如果最后更新日期超过十几秒,您可以删除该消息,因为该人可能已停止输入。这将允许User2看到User1输入,停止并再次继续。

理想情况下,轮询此信息将成为对数据库的现有调用的一部分,以减少额外的开销。