相信很多產(chǎn)品經(jīng)理玩過(guò)用聲音傳文件的APP。一個(gè)手機(jī)選好要發(fā)送的文件,滴滴滴的響了一小會(huì),另外一臺(tái)手機(jī)就收到了文件。這是個(gè)有趣的技術(shù),但是它來(lái)的很快,走的也很快,我們很多人還沒(méi)來(lái)得及去了解它,它便幾乎消失在了我們的視野里。那么它到底是怎么做到的呢?
一切皆信息,聲音作為信息的載體能夠發(fā)送文件,這看起來(lái)沒(méi)有什么可以值得深究的:只需要將要傳的文件轉(zhuǎn)換成數(shù)據(jù)流,再編碼成聲音,接收方再將聲音解碼成數(shù)據(jù)流不就可以了嗎?理論上來(lái)說(shuō),這樣沒(méi)什么問(wèn)題。是的,沒(méi)什么問(wèn)題,1M的文件用聲音估計(jì)得傳一天吧,要真這樣做,這技術(shù)估計(jì)銹成渣了都沒(méi)人用吧。
然而我們?cè)谑褂妙?lèi)似的APP時(shí),發(fā)現(xiàn)并不是這樣的,這些APP無(wú)論傳多大的文件,聲音的時(shí)長(zhǎng)基本都一樣(大概3,4s),可這么短的聲音,哪有那么大的容量呢?沒(méi)事,搞不定的事找干爹。干爹是誰(shuí)?Internet,這可是世界上最大的資源主,幾乎是所有APP的干爹。只要干爹分點(diǎn)羹(URL),everything is possible。
說(shuō)到這里,大家就豁然開(kāi)朗了,只需要將文件傳到服務(wù)器,再把文件的url編碼成聲音傳過(guò)去不就可以了嘛。方案說(shuō)破了,真的很簡(jiǎn)單了。殘酷的事實(shí)是,一般的url長(zhǎng)度對(duì)聲音編碼來(lái)說(shuō)還是太長(zhǎng)了,互聯(lián)網(wǎng)上大部分url的長(zhǎng)度也有30+的字符,發(fā)個(gè)url也要放個(gè)半分鐘一分鐘的聲音,是可忍孰不可忍。
幸而,還有一種叫短地址的東西,再長(zhǎng)的url也能轉(zhuǎn)成一個(gè)實(shí)際信息長(zhǎng)度只有6位的短url(微博中很常見(jiàn))。這些技術(shù)都有了,那么事情就好辦了。6位的字符通過(guò)聲音傳遞大概也就需要要3,4s的時(shí)間,這個(gè)一般人都是可以接受的。
最后,完整的描述一下整個(gè)過(guò)程:當(dāng)一個(gè)手機(jī)確認(rèn)要發(fā)送文件時(shí),它首先會(huì)將這個(gè)文件上傳到服務(wù)器,并接收服務(wù)器返回的短地址,再將這個(gè)短地址編碼成聲音;接收的手機(jī)將聲音解碼成短地址后,再?gòu)倪@個(gè)地址去下載文件。只是整個(gè)APP從形式上讓你感覺(jué)到好像是直接通過(guò)聲音作為載體將文件傳過(guò)去了而已。
這個(gè)不就是赤裸裸的明修棧道,暗渡陳倉(cāng)嗎?一些看似笨重的技術(shù),在巧妙借力,并作適當(dāng)包裝以后,確有化腐朽為神奇的能力。雖然用聲音傳文件的APP在逐漸淡出我們的視線,但是如果哪天它明修“隧道”,你還能看得出來(lái)嗎?
本文來(lái)自微信公眾號(hào)“給產(chǎn)品經(jīng)理講技術(shù)”(pm_teacher)
我就想知道上傳到服務(wù)器要多少時(shí)間?