gpt4 book ai didi

java - jquery/Angular 调度器实现

转载 作者:行者123 更新时间:2023-12-01 09:10:03 26 4
gpt4 key购买 nike

我有一个用 jquery 编写的聊天应用程序。当用户发送消息时,该消息将被发送到 java REST 端点。但我也想听听回应。我认为每秒监听其他 REST 端点会很好,因为我不知道如何像 Facebook 那样实现它。因此,如果有新消息,请获取并显示。如何在 jquery 中做到这一点?

最佳答案

有几种解决方案,但我建议您不要使用 REST 创建聊天应用程序。如果你想要纯 JS,请考虑来自 google 的 firebase(它将是实时的)/meteor 或绝对使用 Websockets(你需要一个 websocket 服务器,并且可以使用 authobahnjs 订阅该服务器)。

我确实意识到它的解决方案比 REST 更复杂,但如果您问我,也许您的客户问 REST 确实不是聊天/实时应用程序的最佳选择...

想象一下这样的情况:您将有很多用户在线,每个用户不仅会发送大量查询(如果他们写得很快),而且还会每秒检查响应。现在想想,如果网络出现问题,您的服务器会发生什么......您将获得大量“挂起”连接等。

顺便说一句。尝试过它的人(就像我过去一样)会告诉你同样的事情,没有通过 REST 轮询消息的聊天! ;)

JQuery 方式...好吧,只要注意在同一个元素上定义多个事件(这是使用 Jquery 时的经典事件),这里有一个函数应该可以执行您想要的操作(它是一篇文章,但您可以调整它):

var interval = 1000;  // 1000 = 1 second, 3000 = 3 seconds
function doAjax() {
$.ajax({
type: 'POST',
url: 'chatController.php',
data: {action: 'getMessagesForUser', user: {user: 'data'}},
dataType: 'json',
success: function (data) {
//do something with results
},
complete: function (data) {
// Schedule the next
setTimeout(doAjax, interval);
}
});
}
setTimeout(doAjax, interval);

您还可以引入一些变量,以确保您在前一个请求完成之前不会发出另一个请求等。

关于java - jquery/Angular 调度器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40974835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com