2010-04-15 137 views
4

有人可以向我解釋chatroulette背後的架構嗎? 我正在考慮一個類似的項目,只會實現音頻 支持(對於初學者)。將此設置爲Flash服務器的最佳方法是? 如果是這樣,我應該如何進入閃存,我需要flex 4嗎?我 有一些初學者與c + +,c#和java的經驗,但我從來沒有 開發任何網絡。chatroulette的體系結構

我也想知道隨機函數如何匹配參與者。 你會如何編寫這樣的代碼。

我在這裏顯然很笨,我非常感謝關於這個問題的一些建議 - 我不希望複製和粘貼解決方案。它 只是很高興聽到你們如何解決這個問題。

非常感謝您

+0

這是真正的Flash10 +層雲http://flashrealtime.com/tuts/p2p-in-flash實現P2P的良好的視頻教程。html – Kirzilla 2010-09-03 06:22:54

回答

11

AFAIK ChatRoulette在Flash Player 10.1中使用了一組新的API,代號爲Stratus,它允許Flash Player實例之間的點對點連接。

因此,而不是視頻和音頻流推到一個特殊的流媒體服務器,如FMS或Red5獨特的ID是共享和對等點直接相互連接。

這有很大的可能性,以減少服務器負載直播的事件,其中1連接到服務器流可以在近鄰之間共享。

如果Stratus沒有直接在對等設備之間推送流,你能想象一下像ChatRoulette這樣的託管賬單嗎?!

如果你想知道更多請查看Stratus的部分在Adobe小夥子:http://labs.adobe.com/technologies/stratus/

+1

Stratus現在已經成熟爲第二代版本代號爲Cirrus,更多細節在這裏 - http://labs.adobe.com/technologies/cirrus/ – jolyonruss 2011-06-27 09:56:26

+0

我不知道這是否正確 - 層雲或Cirrus不允許用於根據許可證生產。 – 2011-07-31 14:29:50

4

你怎麼能匹配的參與者?簡單。有一個名爲「等待用戶」的變量,最初被設置爲空。當用戶連接時,如果「等待用戶」爲空,則使連接用戶成爲等待用戶。如果等待用戶不爲空,則創建一個管理這兩個用戶對話的新線程,並將等待用戶設置爲空。這種「隨機性」意味着如果你有很多訪問者,對話應該是隨機的。但是,如果您一次只有10個人正在進行對話,那麼您不會得到驚人的結果。你需要不斷斷開連接/連接才能工作。

使用actionscript,您可以通過Microphone.get() [使用google獲取更多信息]輕鬆獲得麥克風設備...您必須將收到的數據提供給服務器。

爲了不必直接發送HTTP頭,你應該創建一個套接字[actionscript支持這個,看看flash.net。[Socket/Sockets?我忘了]]並連接到一個自定義的書面服務器,這是很容易完成與C#...我還沒有嘗試過使用C++,並沒有與Java的工作...

服務器將充當「代理「...