1 Reply Latest reply on Apr 26, 2010 6:56 AM by soetfisk

    Easy bidirectional communication via P2P NetStream

    soetfisk Level 1

      I've been looking into the P2P support in Flash 10,  using Adobe Stratus service. I have successfully been able to send data  from one user to another, put my problem is that I haven't figured out  how to send data back in some easy way (or as some kind of response to  the first call).

       

       

      What I'm currently doing;

       

      1. First set up a connection with Stratus service

        nc = new NetConnection();
        nc
        .addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler);
        nc
        .connect(APPLICATION_URL + DEVELOPER_KEY);

      2. On the "server" side I do:

        sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
        sendStream
        .addEventListener(NetStatusEvent.NET_STATUS, sendStreamHandler);
        sendStream
        .publish("file");

        And on the "client" side:

        // 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");

      3. Then I call a remote function on the client:

        ...
        sendStream
        .send("aRemoteFunction", parameterData);
        ...

      4. Now my problem; I want to do the same from the  client to the server, to notify that everything went well, or something  failed. From what I understand, I will have to setup a new NetStream  from the client to the server (i.e publish on the client and play on the server). But to accomplish this, the server need to know the nc.nearID on the client.

      5.  

        Is it possible to get that ID without forcing the user to  manually copy it from the client to server? Or, is there an easier way  for the client to talk back to the server that I am missing?


        • 1. Re: Easy bidirectional communication via P2P NetStream
          soetfisk Level 1

          Contacted Tom Krcha via twitter ( http://twitter.com/tomkrcha/status/12882755421 ): he told me to look into the onPeerConnected(...) property  of NetStream and it worked.

           

          The farID on the subscriber NetStream solved my question;

           

          var c:Object = new Object;
          c
          .onPeerConnect = function(subscriber:NetStream):Boolean {
              trace
          ("far id: " + subscriber.farID); // This farID will be the nearID of the connecting "client".
             
          return true;
          };

          sendStream
          = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
          sendStream
          .client = c;
          sendStream
          .addEventListener(NetStatusEvent.NET_STATUS, netSendStreamHandler);
          sendStream
          .publish("file");