我一直在使用Adobe Stratus服務研究Flash 10中的P2P支持。我已成功能夠從一個用戶發送到另一個數據,把我的問題是,我還沒有想出如何將數據發送回一些簡單的方法(或爲某種響應第一次呼叫的)。通過P2P NetStream輕鬆實現雙向通信
目前我在做什麼;
首先建立在 「服務器」 端與Stratus的服務
nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler); nc.connect(APPLICATION_URL + DEVELOPER_KEY);
連接我做的:
sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS); sendStream.addEventListener(NetStatusEvent.NET_STATUS, sendStreamHandler); sendStream.publish("file");
而對 「客戶」 方面:
// remoteFileID.text is manually copied by the user from the server (which is nc.nearID). recvStream = new NetStream(nc, remoteFileID.text); recvStream.client = this; recvStream.addEventListener(NetStatusEvent.NET_STATUS, recvStreamHandler); recvStream.play("file");
然後我調用遠程功能的客戶端上:
... sendStream.send("aRemoteFunction", parameterData); ...
現在我的問題;我想從客戶端到服務器執行相同的操作,通知一切正常,或者失敗。據我瞭解,我將不得不建立從客戶機到服務器的新的NetStream(即發佈在客戶端和發揮在服務器上)。但要做到這一點,服務器需要知道nc.nearID在客戶端上。
是否有可能獲得該ID不強制手動從客戶端複製到服務器的用戶?或者,有沒有更簡單的方法讓客戶回覆我缺少的服務器?
的NetStream sendStream只適用於服務器,並設置爲*發佈*,所以我只能夠從服務器發送數據到客戶端上此流(只使服務器的的nearID,這客戶端已經知道,因爲它用它來連接到服務器)。 – andsve 2010-04-26 12:07:46
@andsve:答案已更新。 – back2dos 2010-04-26 12:19:39
我沒有得到任何NetGroup.Neighbor.Connect(我應該嗎?),我得到NetConnection.Connect.Success(來自Stratus),然後幾個NetStream.Publish。* NetStream.Play。*事件,但沒有它們包含我能理解的peerID。 :( – andsve 2010-04-26 12:36:05