Question

Je l'ai cherchée dans le support de P2P en Flash 10, en utilisant le service Adobe Stratus. J'ai réussi à été en mesure d'envoyer des données d'un utilisateur à un autre, mettre mon problème est que je ne l'ai pas compris comment envoyer des données d'une manière facile (ou comme une sorte de réponse au premier appel).

Ce que je fais actuellement;

  1. Tout d'abord mis en place une connexion avec un service Stratus

    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler);
    nc.connect(APPLICATION_URL + DEVELOPER_KEY);
    
  2. Du côté "serveur" je fais:

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

    Et du côté "client":

    // 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. Alors j'appeler une fonction à distance sur le client:

    ...
    sendStream.send("aRemoteFunction", parameterData);
    ...
    
  4. Maintenant, mon problème ; Je veux faire la même chose du client au serveur, de notifier que tout allait bien, ou quelque chose a échoué. D'après ce que je comprends, je vais devoir installer un nouveau NetStream du client au serveur (i.e. publier sur le client et jeu sur le serveur). Mais pour cela, le besoin de serveur pour connaître le nc.nearID sur le client.

    Est-il possible d'obtenir cet ID sans forcer l'utilisateur à copier manuellement à partir du client vers le serveur? Ou, est-il un moyen plus facile pour le client de parler au serveur que je suis absent?

Était-ce utile?

La solution

Contacté Tom Krcha via twitter ( http://twitter.com/tomkrcha/status/12882755421): il m'a dit de regarder dans le onPeerConnected (...) de NetStream et cela a fonctionné

.

Le farID sur l'abonné NetStream résolu ma 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".

    recvStream = new NetStream(nc, subscriber.farID);
    recvStream.client = this;
    recvStream.addEventListener(NetStatusEvent.NET_STATUS, netRecvStreamHandler);
    recvStream.play("response");

    return true;
};

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

Autres conseils

pourquoi ne vous envoie pas le nearID au serveur en invoquant une méthode distante par sendStream.send?

modifier désolé, ne pas tout à fait obtenir. Je suggère, vous écouter pour les connexions client sur le serveur. NetGroup.Neighbor.Connect devrait être ce que vous avez besoin:
Sent quand un voisin se connecte à ce noeud. La propriété info.neighbor: String est l'adresse du groupe du voisin. Le info.peerID. Propriété Chaîne à l'ID homologue du voisin

modifier si vous obtenez des événements lorsque les clients se connectent, vous pouvez récupérer tous les clients , et d'utiliser leur farNonce sur le serveur, ce qui est le nearNonce du flux connecté sur le client.

greetz
back2dos

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top