我有一个使用 SAFE 堆栈构建的应用程序,其中活动客户端在服务器端具有相应的对象。当用户关闭他们的浏览器窗口时,我希望向服务器发送一条消息以删除该对象。
我正在尝试像这样使用“onunload”事件:
module WindowEvents =
let unloadSub _ =
let setUnloadEvent dispatch =
Browser.Dom.window.onunload <- (fun _ -> dispatch CloseEvent)
Cmd.ofSub setUnloadEvent
我将其添加到订阅中:
Program.mkProgram Model.init Model.update View.render
|> Program.withSubscription WindowEvents.unloadSub
消息以通常的 Elmish 方式处理,并通过 api 转发到服务器。但是,我发现消息很少到达服务器端。我可以做些什么来使它更可靠吗?还是有更好的替代方法?