Puis-je envoyer des messages via le NetConnection sous-jacente d'une réception (jeu) objet NetStream?
-
30-09-2019 - |
Question
Voici mon problème: j'ai un objet NetConnection connecté à un serveur. En plus je crée un objet NetStream et il a commencé à lire un fichier à partir du serveur. Classique jusqu'à présent.
Ce que je dois maintenant, est d'être en mesure d'envoyer des messages (court) sur le serveur, à différents moments de temps de jeu, mais, clairement, en utilisant la connexion TCP existante .
D'après ce que je peux lire dans la docs , l'objet NetConnection sous-jacents « supports de connexion bidirectionnelle entre un client et un serveur » et, évidemment, les supports de couche TCP elle. Je suis assez bien au courant des concepts de réseau TCP, mais certainement pas de la façon dont les outils Flash les.
-
Est-ce exact? Peut-il être fait en utilisant NetConnection (ou un autre mécanisme)?
-
Comment dois-je à faire cela (un exemple serait génial, mais une description conceptuelle du processus travaillerais aussi bien). Comment puis-je envoyer exactement un message du client au serveur via NetConnection?
-
L'objet NetStream actif interférer en aucune façon avec une telle opération?
Merci.
La solution
Oui, vous pouvez.
Je suppose, nous parlons de la connexion à Flash Media Server.
Utiliser la méthode NetConnection.call () qui exécute à distance procédé de script côté serveur.
public function call(command:String, responder:Responder, ... arguments):void
Vous devez définir cette méthode côté serveur comme un prototype de classe client de connexion
par exemple.
Client.prototype.MyMethod = function(arg)
{
trace("Server received " + arg + "\n");
}
appeler cette méthode devrait ressembler à:
var nc:NetConnection;
//initialize net connection and connect
nc.call("MyMethod", null, "Hello, server");
Si vous avez besoin pour obtenir un résultat -. L'utilisation Responder instance de classe au lieu de null
Si vous avez besoin serveur à utiliser la méthode du client d'appel côté serveur fonction « d'appel » sur l'objet client. Dans ce cas, vous devrez définir un objet à côté client, la méthode a Wich de rappel:
Côté client:
var obj = new Object();
obj.MyCallback = function(arg:Object)
{
trace ("Received message from server: " + arg as String);
}
nc.client = obj;
côté serveur:
clientObject.call("MyCallback", null, "Hello, client");
Cordialement, David.