هل يمكنني إرسال رسائل عبر NetConnection الأساسية لكائن NetStream المستقبلي؟
-
30-09-2019 - |
سؤال
إليك مشكلتي: لدي كائن NetConnection متصل بخادم. في الأعلى أقوم بإنشاء كائن NetStream وبدأ تشغيل ملف من الخادم. كلاسيكي حتى الآن.
ما أحتاجه الآن ، هو أن أكون قادرًا على إرسال بعض الرسائل (القصيرة) إلى الخادم ، في لحظات مختلفة أثناء وقت اللعب ، ولكن بوضوح ، باستخدام اتصال TCP الحالي.
من ما يمكنني قراءته المستندات, يدعم كائن NetConnection الأساسي "اتصال ثنائي الاتجاه بين العميل والخادم" ومن الواضح أن طبقة TCP تدعمه. أنا على دراية بمفاهيم شبكة TCP بشكل جيد إلى حد ما ، ولكن بالتأكيد ليس كيف ينفذها فلاش.
هل هذا صحيح؟ هل يمكن القيام بذلك باستخدام NetConnection (أو بعض الآليات الأخرى)؟
كيف يمكنني القيام بذلك (مثال على ذلك سيكون رائعًا ، لكن الوصف المفاهيمي للعملية سيعمل أيضًا). كيف بالضبط أرسل رسالة من العميل إلى الخادم عبر NetConnection؟
هل يتداخل كائن 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");
التحيات ، ديفيد.