هل يمكنني إرسال رسائل عبر NetConnection الأساسية لكائن NetStream المستقبلي؟

StackOverflow https://stackoverflow.com/questions/3538681

سؤال

إليك مشكلتي: لدي كائن NetConnection متصل بخادم. في الأعلى أقوم بإنشاء كائن NetStream وبدأ تشغيل ملف من الخادم. كلاسيكي حتى الآن.

ما أحتاجه الآن ، هو أن أكون قادرًا على إرسال بعض الرسائل (القصيرة) إلى الخادم ، في لحظات مختلفة أثناء وقت اللعب ، ولكن بوضوح ، باستخدام اتصال TCP الحالي.

من ما يمكنني قراءته المستندات, يدعم كائن NetConnection الأساسي "اتصال ثنائي الاتجاه بين العميل والخادم" ومن الواضح أن طبقة TCP تدعمه. أنا على دراية بمفاهيم شبكة TCP بشكل جيد إلى حد ما ، ولكن بالتأكيد ليس كيف ينفذها فلاش.

  1. هل هذا صحيح؟ هل يمكن القيام بذلك باستخدام NetConnection (أو بعض الآليات الأخرى)؟

  2. كيف يمكنني القيام بذلك (مثال على ذلك سيكون رائعًا ، لكن الوصف المفاهيمي للعملية سيعمل أيضًا). كيف بالضبط أرسل رسالة من العميل إلى الخادم عبر NetConnection؟

  3. هل يتداخل كائن NetStream النشط بأي شكل من الأشكال مع مثل هذه العملية؟

شكرًا.

هل كانت مفيدة؟

المحلول

نعم ، يمكنك.

أفترض ، نحن نتحدث عن اتصال مع خادم Media Flash.

استخدم طريقة netconnection.call () التي تنفذ طريقة البرنامج النصي من جانب الخادم عن بُعد.

public function call(command:String, responder:Responder, ... arguments):void

يجب عليك تحديد طريقة جانب الخادم هذه كنموذج أولي لفئة عميل الاتصال

على سبيل المثال

Client.prototype.MyMethod = function(arg)
{
trace("Server received " + arg + "\n");
}

ثم يجب أن تبدو هذه الطريقة مثل:

var nc:NetConnection;

//initialize net connection and connect

nc.call("MyMethod", null, "Hello, server");

إذا كنت بحاجة إلى الحصول على بعض النتيجة - استخدم مثيل فئة المستجيب بدلاً من NULL.

إذا كنت بحاجة إلى خادم للاتصال بأسلوب العميل ، فاستخدم وظيفة "الاتصال" من جانب الخادم على كائن العميل. في هذه الحالة ، سيتعين عليك تحديد بعض الكائنات في جانب العميل ، Wich لديه طريقة رد الاتصال:

جانب العميل:

var obj = new Object();
obj.MyCallback = function(arg:Object)
{
trace ("Received message from server: " + arg as String);
}
nc.client = obj;

جانب الخادم:

clientObject.call("MyCallback", null, "Hello, client");

التحيات ، ديفيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top