如何让移动应用程序在没有单独服务器的情况下进行通信

问题描述 投票:0回答:1

我正在设计一个移动应用程序,允许用户为项目的集体列表(基本上只是字符串)做出贡献。其中一些项目将显示在用户的设备上,但每个用户的项目不同。该应用程序旨在作为社交活动在本地使用,所有用户都在同一物理房间和同一 Wifi 网络上运行同一应用程序。

有关以类似方式工作的应用程序示例,请参阅 SpaceTeam 应用程序,在这款游戏中,玩家在屏幕上收到与其他玩家屏幕上的控件相对应的指令。在 SpaceTeam 中,指令列表不是由玩家提供的,但仍然存在有限的有效指令列表,该列表在当前播放的设备之间进行协调(据我所知,这是在玩家的设备之间完成的)无需单独的外部服务器)。

我当前的设计方法是其中一台设备将自己分配为主机,维护贡献项目的完整列表,接受其他用户(客户端)的添加,并将项目分配回其他用户。

我正在使用 React Native,因为我希望我的应用程序能够支持 iOS 和 Android,但如果允许我实现目标,任何开放和跨平台的移动应用程序框架都是可以接受的。

我可能走错了路,但是 socket.io 看起来它可能提供我正在寻找的某种高级通信 API。

我发现了无数关于如何处理应用程序之间通信的教程,例如有关创建消息传递或视频通话应用程序的教程,但在所有这些情况下,都需要一个单独的服务器(通常是node.js服务器),在应用程序外部运行(通常在开发人员的机器上)。我认为这意味着我需要保持服务器运行才能使应用程序正常运行,并且我不想提供和维护该资源。

我希望应用程序能够处理它们之间的通信,可以说是“点对点”。我可以让其中一个应用程序在移动设备上实际启动服务器,并让其他应用程序连接到它,但我还没有找到有关如何执行此操作的说明。或者,也许还有另一种方法可以让应用程序仅在本地网络上进行通信?

任何人都可以提供一个工具组合,使我能够将这种应用程序间通信放在一起,而无需自己编写大量网络处理代码吗?我很高兴设计传递的消息类型以及如何处理它们,但我希望有一个跨平台库用于将设备链接在一起并发送/接收消息。

react-native socket.io network-programming p2p mobile-application
1个回答
0
投票

如果您避免使用服务器的动机是为了避免成本 - 您可以非常轻松地管理免费的 Firebase 或 Supabase,以实现简单的待办事项列表管理器。以 Firebase Firestore 作为起点。这就是我在你的情况下会做的,现在你可以从 Firebase 的免费套餐中获得很多好处。我们在最近的项目中也大量使用了 Supabase。

如果您仍然想探索点对点方向,您可以查看 react-native-webrtc,他们的存储库中也有一个 示例 React Native 应用程序。点对点连接面临的挑战之一是,有许多特定于平台的 API/解决方案仅适用于 iOS 或 Android,因此,如果您想要一种通用的解决方案,那么您会受到限制 -所有解决方案都是用 React Native 编写的。 WebRTC 可能是一种适用于这两个平台的探索。

© www.soinside.com 2019 - 2024. All rights reserved.