如何在新消息进入时发出警报

时间:2012-08-06 14:56:19

标签: php javascript

我有一个用PHP + MySQL + Javascript编写的在线聊天室程序

我使用jQuery.post()chat.php获取新的聊天消息。这个php程序从MySQL读取数据,并在页面上echo读取数据。

如果有新消息进入,我该如何提醒用户?我只希望它在聊天室页面没有聚焦时发出警报。

顺便说一句,闪烁网页标题是一个提醒用户的好主意吗?

4 个答案:

答案 0 :(得分:0)

为每条消息提供一个唯一的ID,例如每5秒轮询一次chat.php,并将客户的最后一条消息ID与您从chat.php获得的内容进行比较。

这很容易做到。

如果您想要一些更酷,更实时的解决方案,您应该查看www.pubnub.com或类似的服务。

答案 1 :(得分:0)

您可以使用facebook,Skype或其他着名的“聊天室”方法。

当您收到用户的新回复时,您有两种方法:

  • 您添加了一个通知出现在窗口中(当在Skype或Mac中的Skype时...)
  • 您想要更改菜单中聊天按钮的颜色(并闪烁几秒钟)。

红色是咄咄逼人的颜色,但这取决于您的网站颜色...

对于手电筒,只需几秒钟即可使用,否则用户会厌倦聊天系统...

对于网页设计最佳实践,一篇非常好的文章是here ...

答案 2 :(得分:0)

要检查页面是否有焦点,您可以使用document.hasFocus功能。如果文档是聚焦的,则返回true,否则返回false

虽然Opera似乎不支持,但如果支持Opera对您很重要,您可以观看focus的{​​{1}}和blur事件以确定是否有窗口是否关注焦点(here is an example。)


关于“如何提醒用户”的主题,这取决于您自己决定。您可以按照正常方式执行此操作,在标题前加上“(x)”,其中 x 是新邮件的数量。您还可以使用Flash或更好的JavaScript Audio API警告用户噪音:

window

请务必保持音频反馈严格自愿


如果你想要更加想象,你可以看看Chrome desktop notifications。每当有新消息到达时,运行Chrome的任何用户都可以收到桌面通知(与收到Skype或MSN消息时的通知相同)。 Here is an example of usage

答案 3 :(得分:0)

您必须使用HTML5标记,而不是使用Javascript / JQuery控制它!

这对我有用: http://css-tricks.com/play-sound-on-hover/

在html源代码中:

<audio id="chat_sound" controls>
    <source src="audio/notification.mp3" type="audio/mp3" preload="auto">
    <source src="audio/notification.ogg" type="audio/ogg" preload="auto">
    Your browser isn't invited for super fun audio time.
</audio>

在javascript中:

var sound_notification = $("#chat_sound")[0];

然后你可以使用这些调用: ...``

sound_notification.pause();
sound_notification.play();

...