Javascript 更新数据库时如何发送警报

Javascript 更新数据库时如何发送警报,javascript,php,ajax,postgresql,web-chat,Javascript,Php,Ajax,Postgresql,Web Chat,我用php和ajax实现了一个简单的原始聊天系统。基本功能是添加新联系人并与之对话,基本上类似于电报或whats'app。所以,我有很多聊天,现在我将实现一个功能,让我通知新的消息的联系人。我读了一些关于这方面的东西,但我不太明白。如何做到这一点,我读过关于长轮询或websocket的文章,但这只适用于新浏览器。现在它实现了这个非常糟糕的功能,使用ajax中的一个函数,它每秒向服务器发送一个请求,并重新加载当前聊天中的所有消息,但不加载其他聊天,并且无法可视化通知。请帮助我:DD如何做到这一点的

我用php和ajax实现了一个简单的原始聊天系统。基本功能是添加新联系人并与之对话,基本上类似于电报或whats'app。所以,我有很多聊天,现在我将实现一个功能,让我通知新的消息的联系人。我读了一些关于这方面的东西,但我不太明白。如何做到这一点,我读过关于长轮询或websocket的文章,但这只适用于新浏览器。现在它实现了这个非常糟糕的功能,使用ajax中的一个函数,它每秒向服务器发送一个请求,并重新加载当前聊天中的所有消息,但不加载其他聊天,并且无法可视化通知。请帮助我:DD

如何做到这一点的总体思路是让观察者定期给数据库打电话,看看是否有变化。您可以使用AJAX进行此操作,并调用该函数,例如
setInterval(myAjaxFunction,3000)
以每3秒检查一次

对于检查数据库,一种方法是查看表中的记录计数,并将其最初存储。比如:

 SELECT COUNT(*) FROM tableName
if(queryResult != currentRecordCount){
    currentRecordCount = queryResult;
    sendNodification();
} 
获取表中的记录数。因此,首先执行此操作并将其存储在JavaScript中,然后让AJAX返回并发送查询值。然后你可以做一些类似的事情:

 SELECT COUNT(*) FROM tableName
if(queryResult != currentRecordCount){
    currentRecordCount = queryResult;
    sendNodification();
} 
在AJAX调用后的
success


这将使一个观察者每3秒钟检查一次,如果数据库中发生了变化,它将调用一个
sendNodification
函数。

这太宽泛了,我们唯一能给你的是如何处理的基本概念。但是一般的想法是让一个观察者定期检查数据库中的更改(例如查看记录的数量是否更改),并在有更改时发送更新。谢谢你的回答,好的,你说我需要一个函数,例如evrery second,查看数据库中是否有更改,并根据更改的内容,我做了一些事情,在本例中是发送通知?我添加了一个答案(因为它太长了,无法发表评论),解释了做你想做的事情的一般方法,希望这有帮助,你可以在你的应用程序中实现这种方法。是的,Fanstatic我做了类似的事情,但是有了这个功能,我现在无法更改哪一行,我无法向特定用户发送通知!!'因为我想向收到消息的特定用户发送通知!非常感谢你的帮助answer@samuele您的ID是否自动递增整数,并仅插入?如果是这样,您可以通过ID选择新记录,并使用
WHERE(ID>queryResult-(queryResult-currentRecordCount))
而不是假设
queryResult>currentRecordCount
。记录中是否有关于此项转到哪个用户的信息?如果是这样,您也希望在查询中得到它(
selectuserfromtblname WHERE…
)。一种更为暴力的方法是在客户机上创建一个表的副本,然后从数据库中获取该表,然后循环并检查差异,但这会增加服务器提取整个表的负担。但是如果有相对少量的记录,这就可以了。