2013-03-15 260 views
3

我試圖建立一個proyect像PTTDroid,我的意思是一按通或對講機的應用。Android客戶端和服務器的Node.js

的問題是,在這個程序,你不容使用3G接入網絡,所以我決定用Node.js的服務器和實現Android客戶端用它comunicate。我試圖用Phonegap做一個multiplattform proyect,問題是對於音頻記錄你不能訪問緩衝區,你只能啓動和停止或暫停錄製過程,但不能在捕獲時發送數據。所以我的問題是可以通過Socket.IO或類似的方式通過原生Android函數(Audiorecord類)與Node.js服務器實時流式傳輸音頻。

我發現了這個project,Asimi JS,但我不知道是否有人知道更好的方式來做我想做的事。

非常感謝您的幫助!

回答

3

這當然是有可能做到這一點,但因爲它使用TCP標準的NodeJS的HTTP服務器都會是不可取的。您希望將UDP用作音頻的傳輸層,因爲它會更快,並且可能發生的小包丟失很可能不成問題。

要完全老實跟你說這聽起來像你需要寫在本機平臺的幾個演示應用 - 所以不要使用PhoneGap的。您需要本地平臺才能訪問諸如麥克風之類的東西並通過UDP進行流式傳輸。

當你有演示工作時,你可以繼續嘗試其他平臺,但從一個簡單的設置開始,而不是試圖一次完成 - 如果這很容易,別人會做到這一點在你之前。

讓我推薦你最舒服的,如(的NodeJS,Java和C,C++,C#)任何一種語言,一個簡單的UDP服務器。讓UDP服務器接收並將內容保存到一個文件中,然後您可以在臺式計算機上播放以驗證結果。作爲一個簡單的客戶端,可以在Android或iOS上構建一個客戶端,並將您已經記錄幷包含在應用中的文件進行流式傳輸。當你有這個設置工作,你可以嘗試捕捉麥克風,然後做一個用戶界面,然後支持多個電話,然後建立一個記錄對話的服務器,然後建立一個用戶數據庫,等等。但從你的主要特徵的原型開始。

3

我終於發現並解決我的問題(至少這是我的想法)...首先我創建了一個服務器來發送和DatagramSocket的,之後收到UDP數據包,以實現服務器和客戶機之間的通信,當我通過3G連接時,我需要一個靜態端口和IP,這就是爲什麼我的服務器無法連接到客戶端。通過數據連接,用戶IP和端口不總是相同的,如果您想要發送和接收,則必須始終打開相同的套接字。另一方面,服務器在連接時必須存儲來自客戶端的地址和端口。

非常感謝您的幫助ExxKA