在 Chrome 和 FF 中关闭选项卡时不会调用 Channel API /disconnect 入站服务

发布于 2025-01-03 18:12:10 字数 450 浏览 1 评论 0原文

每次用户登录我的应用程序时,我都会创建套接字连接。这意味着,如果他们在同一浏览器窗口中打开新选项卡,则会为每个浏览器选项卡建立多个套接字连接。 当我关闭这些选项卡时出现问题;调用不一致/断开连接入站服务。 这意味着对于某些连接 /disconnect 不会被调用,而对于某些连接则被调用。我无法一致地重现这一点(有时它称为 /disconnect 有时则不)。

我依靠 /disconnect 来清理为特定通道创建(存储在数据存储中)的临时对象,因此我留下了从未调用 /disconnect 的所有 OpenChannel 对象。

Chrome 和 FireFox 会出现这种情况,而 IE 则不会出现这种情况。 我是否正确使用 API?每个浏览器窗口应该有一个套接字连接而不是选项卡吗? (如果是这种情况,那么如果我们将令牌存储在 cookie 中,我们是否会重新建立与该令牌的连接?这不会算作每个客户端 ID 两个连接吗?

谢谢。

I create socket connection each time user logs into my application. This means if they open new tabs within same browser window multiple socket connections are established for each browser tabs.
Problem occurs when I close these tabs; inconsistently /disconnect inbound service is called.
This means for some connection /disconnect is not called and for some it is called. I can't reproduce this consistently (sometimes it called /disconnect sometimes it doesn't).

I am relying on /disconnect to clean up temporal objects created(stored in datastore) for a particular channel so I am left with all the OpenChannel objects for which /disconnect is never called.

This happens with Chrome and FireFox and never with IE.
Am I using API correctly? Should there ever be one socket connection per browser window rather than tab? (If this is the case then if we store token in the cookie, do we re-establish connection with this token? Wouldn't this count as two connection per client id?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2025-01-10 18:12:10

如果您针对使用相同客户端 ID 创建的令牌打开两个以上的连接,则行为将变得不确定。因此,如果您使用 user.user_id() 作为客户端 ID 并且同一用户打开 3 个选项卡,您可能不会获得其中一个选项卡的 /disconnected 回调,即使您为每个选项卡创建新令牌这些选项卡。

If you open more than two connections against a token created with the same client id, behavior becomes undefined. So if you're using, say, user.user_id() as the client id and the same user opens 3 tabs, you probably won't get the /disconnected callback for one of those tabs, even if you create new tokens for each of those tabs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文