gpt4 book ai didi

android - 即使应用程序未运行,也要保持 socketio 和 nodejs 连接

转载 作者:行者123 更新时间:2023-11-29 01:09:02 25 4
gpt4 key购买 nike

我有一个聊天系统,其中 socketio 客户端在成功连接后向节点服务器发送一个 id。因此,当用户使用应用程序时,他们一直连接到节点服务器,但当应用程序关闭时,连接也会关闭。所以我想要的是保持客户端连接到服务器,即使应用程序没有运行。我正在为该应用程序使用 Webview。

问题:当应用程序未运行时,如何使用 socketio 连接到节点服务器并使用 javascript 发送一些数据?

谢谢。

最佳答案

在节点中构建一个端点来生成客户端ID,当客户端连接时向它们发出您自己的ID,并将socketio ID与您自己的ID相关联。然后在实体中引用自己的ID。以后使用图书馆的 ID 作为您自己的 ID 无论如何都会很痛苦,这样当客户端重新连接时,它可以提供您自定义发给他们的 ID,并从中断的地方继续。这使得重新连接正常,意味着您不必围绕这个问题进行架构设计。

我之所以说这一切,是因为很难保持 100% 的正常运行时间到连接永远不会关闭的程度。不切实际。如果 android 应用程序重新启动,那么如果您依赖 socketio 提供的这些临时 ID,则所有状态都将被重置。如果后端重新启动,任何代理出现故障等。那么您将回到原点。

也就是说,我会构建两个节点服务器 - 一个套接字服务器,它除了接受连接和转发数据外什么都不做,还有一个可以全天重启的服务器,它负责调用第一个服务器发送数据。

如果你想扩展它,你可能有很多套接字服务器,让它们绑定(bind)到一个队列系统,比如 rabbitmq,并为它们连接的客户端订阅事件,当它们收到事件时可以将它们写入套接字。然后让您的其他控制服务将事件发布到排队系统以将事件发布到套接字。通过这种方式,您可以将业务逻辑的重新部署与维护与 Android 客户端连接的服务器完全分离。

另一种解决方案可能是使用诸如 https://www.pubnub.com/ 之类的东西它将为您处理大部分这些问题。

祝你好运。

关于android - 即使应用程序未运行,也要保持 socketio 和 nodejs 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44613757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com