小编thu*_*mon的帖子

如何在 PWA Service Worker 中安排定期任务

我想在我的 PWA 中安排一个定期任务,然后我可以在每天的某个特定时间显示通知。

我尝试了通知 API: https: //web.dev/notification-triggers/,它似乎有效。但是,根据文档,仍然需要在App的页面上下文中setInterval,例如

setInterval(() => navigator.serviceWorker.getRegistration().then(reg=>{
  if (!reg) {
    return
  }
  reg.showNotification('test', {
      tag: 'test-tag',
      body: 'This notification was scheduled 1min ago',
      showTrigger: new TimestampTrigger(new Date().getTime() + 60 * 1000),
    });
  }), 60 * 1000)
Run Code Online (Sandbox Code Playgroud)

这不是我理想的解决方案,如果我关闭我的应用程序,通知将不会被触发。

然后我尝试了periodicSync API: https: //web.dev/periodic-background-sync/,例如

await registration.periodicSync.register('periodic-notification', {
  minInterval: 60*1000
});
Run Code Online (Sandbox Code Playgroud)

根据我的测试,periodicSync如果我在dev-tool->Application->Service Workers->Periodic Sync button. 但我期望的是periodicSync每 1 分钟获取一次事件。根据文档,似乎它与 相关site-engagement,那么它不是一个真正的周期性任务。

有解决这个问题的想法吗?谢谢你!

notifications service-worker progressive-web-apps

5
推荐指数
0
解决办法
1476
查看次数

WebSocket 客户端无法使用不同端口连接到 Java spring WebSocket 服务器

我正在使用 Java Spring WebSocket 创建一个 WebSocket 服务器,如果从同一服务器创建 WebSocket 客户端,它实际上可以工作。

这是我的服务器端代码,非常简单

// WebSocketConfig.java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer  {
    @Autowired
    SocketTextHandler socketTextHandler;

    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(socketTextHandler, "/sockets");
    }
    
}
Run Code Online (Sandbox Code Playgroud)
// SocketTextHandler.java
@Component
public class SocketTextHandler extends TextWebSocketHandler {
    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message)
            throws InterruptedException, IOException {
        String payload = message.getPayload();
        System.out.println("16: " + session.getId());
        session.sendMessage(new TextMessage("Resp: " + payload));
    }

    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) {
        System.out.println("Server transport error: " + exception.getMessage()); …
Run Code Online (Sandbox Code Playgroud)

java websocket spring-boot spring-websocket

4
推荐指数
1
解决办法
1408
查看次数