Android客户端和Node.js服务器

时间:2013-03-15 13:38:50

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

我正在尝试开发像PTTDroid这样的项目,我的意思是一键通或对讲机应用程序。

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

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

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

当然可以这样做,但是标准的NodeJS http服务器是不可取的,因为它使用tcp。您希望使用UDP作为音频的传输层,因为它会更快,并且可能发生的小数据包丢失很可能不是问题。

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

当你有一个演示工作时,你可以继续尝试使用另一个平台,但是从一个简单的设置开始,而不是一次性尝试 - 如果这很容易,别人会在之前完成你。

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

答案 1 :(得分:3)

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

非常感谢您的帮助ExxKA