【问题标题】:Android Client and Node.js ServerAndroid 客户端和 Node.js 服务器
【发布时间】:2013-03-15 13:38:50
【问题描述】:

我正在尝试开发像 PTTDroid 这样的项目,我的意思是 Push-To-Talk 或 Walkie-Talkie 应用程序。

问题是在这个应用程序中你不能使用 3G 来访问网络,所以我决定使用 Node.js 服务器并实现一个 Android 客户端与之通信。我尝试使用 Phonegap 做一个多平台项目,问题是对于音频记录,您无法访问缓冲区,您只能开始和停止或暂停录制过程,但不能在捕获时发送数据。所以我的问题是可以通过 Socket.IO 或类似的 Node.js 服务器通过原生 Android 功能(Audiorecord 类)实时流式传输音频捕获?

我发现了这个project,Asimi JS,但我不知道其他人是否知道更好的方法来做我想做的事。

非常感谢您的帮助!

【问题讨论】:

    标签: android node.js cordova socket.io audiorecord


    【解决方案1】:

    当然可以,但不建议使用标准的 NodeJS http 服务器,因为它使用 tcp。您希望将 UDP 用作音频的传输层,因为它会更快,而且可能发生的小丢包很可能不会成为问题。

    老实说,听起来您需要在本机平台上编写一些演示应用程序 - 所以不要使用 phonegap。您需要原生平台才能访问诸如麦克风之类的东西并通过 UDP 进行流式传输。

    当你有一个演示工作后,你可以继续尝试另一个平台,但从一个简单的设置开始,而不是尝试一次完成所有工作 - 如果这么简单,其他人早就做过了你。

    让我推荐一个简单的 UDP 服务器,使用您最熟悉的任何语言,例如(NodeJS、Java、C、C++、C#)。让 UDP 服务器接收内容并将其保存到文件中,然后您可以在台式计算机上播放该文件以验证结果。作为一个简单的客户端,在 Android 或 iOS 上构建一个,并流式传输您已经记录并包含在应用程序中的文件。当你有这个设置工作时,你可以尝试捕获麦克风,然后做一个用户界面,然后支持多个电话,然后构建一个记录对话的服务器,然后构建一个用户数据库,等等。但是从你的主要功能的原型开始。

    【讨论】:

      【解决方案2】:

      我终于发现并解决了我的问题(至少我是这么认为的)...首先我创建了一个服务器来通过DatagramSocket发送和接收UDP数据包,然后实现服务器和客户端之间的通信,当我通过 3G 连接时,我需要有一个静态端口和 IP,这就是为什么我的服务器无法连接到客户端的原因。使用数据连接时,用户 IP 和端口并不总是相同的,如果要发送和接收,则必须始终打开相同的套接字。另一方面,服务器必须在连接时存储来自客户端的地址和端口。

      非常感谢您的帮助ExxKA

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 2019-02-26
        • 1970-01-01
        • 2019-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多