我一直在思考像 React 这样的代码和库,它们可以自动对发生的事件做出反应,并且想知道所有这些是如何在 C++ 和机器代码的较低级别实现的。
我似乎无法想出任何其他方式可以使用 if not with while loop 在另一个线程上运行来实现诸如事件侦听器之类的东西。
那么这一切都在幕后吗?只是 while 一直循环下去?例如,RethinkDB 将自己宣传为具有repubsub库的“实时数据库” 。“订阅”方法是否只是在后台使用 while 循环实现的?我似乎无法找到任何相关信息。
像,插座之类的,也是。当计算机在端口上“侦听”套接字连接时,该计算机是否正在运行类似以下内容:
while(1) {
if (connectionFound) {
return True;
}
}
Run Code Online (Sandbox Code Playgroud)
或者有什么我想念的吗?
我按照本教程在我的 Web 应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但之后,有时不到五分钟,订阅就会过期,根据我的后端。我从推送服务中收到错误代码 410,教程说这意味着订阅已过期。
这太疯狂了,订阅怎么会在不到五分钟的时间内到期?我搜索了我的问题,似乎没有其他人遇到过这个问题,有些人甚至说订阅可以持续数年!
我尝试在我的 service worker 中为“pushsubscriptionchange”事件实现一个事件监听器,但根据Serginho 的回答,Chrome 自 2019 年起没有实现该事件,我认为从那时起就没有改变。
哦,虽然 Chrome 可以处理订阅(但如上所述只能处理一次/两次),但 Firefox 甚至不做任何事情。我感觉我快疯了。但是,如果我使用此站点测试推送订阅功能本身,它可以在 Firefox 中运行!和铬!他们在做什么而我不是?它们显示的代码与我上面链接的教程完全相同。
我现在还能做什么?我已经考虑过可能会创建一个间隔setInterval()并每隔一秒左右重新订阅用户,但我认为这行不通。
任何帮助,将不胜感激。
firefox google-chrome push-notification service-worker web-push