友
我正在使用Grails应用程序。这个应用程序有一个提醒功能,我希望Grails定期检查是否有开放提醒。这是使用Quartz-plugin完成的。如果找到打开的提醒,我想显示一个弹出窗口(使用Javascript警报)。这是如何工作的?
这就是我现在所拥有的:
作业
class checkRemindersJob {
HomeController myHome = new HomeController()
static triggers = { cron name: 'myTrigger', cronExpression: "0 * * ? * *" }
def execute() {
myHome.checkReminder()
}
}
控制器主页
def checkReminder(){
def myRem = Reminders.findAllBy...
if( myRem.size > 0 ) triggerReminders( myRem )
}
def triggerReminders( ArrayList myRem ){
for( x in myRem ) {
if(...) triggerPopup()
}
}
def triggerPopup(){
????
}
答案 0 :(得分:1)
听起来您可以使用轻量级REST API来攻击此挑战并在JavaScript中执行计时:
通过这种方式,您可以让客户端轮询您的服务器,该服务器遵循标准模型正常的Web请求。
如果您希望Grails服务器将消息推送到客户端,您需要查看WebRTC或WebSockets等技术,这些技术可以保持双向通道的打开,但这听起来像是您想要实现的目标。
答案 1 :(得分:1)
您的方法无法正常工作,因为您无法从Quartz作业中触发JavaScript。此外,您的Quartz作业正在实例化并调用控制器操作,这是不推荐的(并且不太可能起作用)。
相反,请尝试以下
setInterval()
函数重复向HomeController.checkReminder