J'ai examiné la prise en charge P2P dans Flash 10, en utilisant le service Adobe Stratus. J'ai réussi à envoyer des données d'un utilisateur à un autre, mais mon problème est que je n'ai pas compris comment renvoyer les données d'une manière simple (ou comme une sorte de réponse au premier appel).Communication bidirectionnelle facile via P2P NetStream
Ce que je fais actuellement;
Tout d'abord mis en place une connexion avec le service Stratus
nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler); nc.connect(APPLICATION_URL + DEVELOPER_KEY);
Du côté "serveur" je fais:
sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS); sendStream.addEventListener(NetStatusEvent.NET_STATUS, sendStreamHandler); sendStream.publish("file");
Et sur le 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");
Ensuite, je appeler une fonction à distance sur le client:
... sendStream.send("aRemoteFunction", parameterData); ...
Maintenant, mon problème; Je veux faire la même chose du client au serveur, pour notifier que tout s'est bien passé, ou quelque chose a échoué. D'après ce que je comprends, je vais devoir installer un nouveau NetStream du client au serveur (par exemple, publier sur le client et jouer sur le serveur). Mais pour ce faire, le serveur doit connaître le nc.nearID sur le client.
Est-il possible d'obtenir cette identification sans forcer l'utilisateur à la copier manuellement du client au serveur? Ou, y a-t-il un moyen plus facile pour le client de parler au serveur qui me manque?
NetStream SendStream est uniquement disponible sur le serveur et est réglé sur * publier *, donc je suis seulement capable d'envoyer des données à partir du serveur au client sur ce flux (et donc seulement le nearID du serveur, qui le client le sait déjà puisqu'il l'a utilisé pour se connecter au serveur). – andsve
@andsve: réponse mise à jour. – back2dos
Je ne reçois aucun NetGroup.Neighbor.Connect (devrais-je?), Je reçois NetConnection.Connect.Success (de Stratus), puis quelques événements NetStream.Publish. * NetStream.Play. *, Mais aucun ils comprennent un peerID de ce que je peux comprendre. :( – andsve