كيفن شميد: مرحبا بالجميع. مرحبا بكم في الندوة CS50 على Node.js. اسمي كيفين. أنا TF CS50. وأنا نوع من مثل متحمس حقا حول هذه الندوة. أعتقد Node.js هو بارد جدا. آمل أن تكون هذه الندوة يمكن استخدامها كسلعة، أعتقد، منطلقا ل بعض المشاريع النهائية الخاصة بك إذا كنت ترغب في استخدام شيء من هذا القبيل Node.js. سنقوم نوع من بدء الندوة من قبل مجرد الحديث عن قليلا من نوع من التدرجية الخلفية وجهات نظر من Node.js، ثم سوف نمضي إلى بعض الأمثلة التعليمات البرمجية. وسآخذ الشفرة على موقع على شبكة الانترنت، ويمكنك أن تبحث في التعليمات البرمجية. وبعد الندوة، وأنا فرز من الحديث حول كيفية يمكنك إعداد Node.js على جهاز الكمبيوتر الخاص بك. موافق. لذلك دعونا نبدأ. لذا أعتقد أنا فقط أريد أن أتحدث عن خوادم الويب، حقا، أولا. وتبدأ هذه المناقشة، وأنا في الأساس مخطط الذي هو من الكتاب المدرسي تستخدم لCS61، التي يظهر أساسا التفاعل بين عملية العميل، مثل الويب الخاص بك المتصفح أو مثل العميل الهدف الخاص بك أو شيء من هذا القبيل، وخادم الويب. لذلك هذا النوع من يشبه الصورة التي رأيتها في محاضرة حول الأربعاء حيث الأساس لدينا بعض عملية العميل مثل جوجل كروم. ثم خطوة واحدة هي يرسل العميل طلب. بحيث يمكن أن يكون شيئا مثل السماح البئر زيارة، وأنا لا أعرف، CS50.net. ولذا فإننا إصدار هذا الطلب. ولا أحد يتذكر اسم البروتوكول الذي يحدد كيف أن ينبغي تنظيم الطلب؟ نعم. الحضور: [غير مسموع]. كيفن شميد: بالضبط. لذلك فمن مثل HTTP، أليس كذلك؟ وذلك أساسا مواصفات لكيفية يجب أن تكون وضعت فعلا ذلك الطلب بها، لأنه في نهاية المطاف، هذا الطلب هو في الحقيقة مجرد تحب السلسلة التي في الأساس ويقول أريد هذا. ومواصفات لذلك هو HTTP. ذلك أن مثل البروتوكول. حتى ذلك الحين يستلم الملقم هذا الطلب. لذلك يا رفاق ديك خادم الويب المثبتة في الأجهزة CS50. انها اباتشي. وهذا الاسبوع عند العمل على المشكلة تعيين سبعة، عليك فعلا أن تعمل مع أن خادم الويب. حتى يستلم الملقم هذا الطلب، و ثم عليه أن نوع من الصفر ل الرأس ويقول مثل جيدا ما أفعل مع هذا؟ لذلك بناء على ما تقرر القيام به، ثم قد تضطر إلى الاتصال نوعا من الموارد. ويمكن أن يكون هذا المورد الكثير من الاشياء المختلفة. لأحد، وأنها يمكن أن تكون مجرد مثل ملف HTML ثابتة. لذلك يمكن أن يكون مجرد مثل بعض HTML هذا هو مثل ل موقعك الشخصي. يمكن أن يكون ملف ثابت مثل صورة أو مثل الفيلم الذي لديك. يمكن أن يكون حتى للحديث إلى نوع من قاعدة البيانات مثل قاعدة بيانات MySQL. لذلك لا يكون دائما على التواصل مع الموارد، ولكن في بعض الحالات، ما في وسعها. حتى ذلك الحين ما انها تنوي القيام به بعد ذلك هو انه سيكون ل إرسالها مرة أخرى للاستجابة. واستجابة لهذا هو المحدد أيضا HTTP. حتى ذلك الحين يمكن للعميل الحصول عليها. فإنه يمكن تمزيقها ومعالجته. ثم تحصل على صفحة ويب مثل غوغل أو أو CS50.net كل ما ذهب إليه. موافق؟ لذلك هذا هو التفاعل الأساسية التي ونحن في طريقنا ليكون التعامل معها. ونحن في طريقنا الى حد كبير أن تكون التركيز على هذا الجزء من التفاعل، الملقم. موافق. بارد. أي شخص لديك أي أسئلة حتى الآن؟ موافق. لذلك كما قلنا، يتلقى خادم الويب هذا الطلب HTTP ثم تصدر هذه استجابة HTTP. ومثل تحدثنا عن قبل، و خادم الويب الأجهزة CS50 هو اباتشي. وذلك عند الرجال العمل على تعيين سبعة P، كنت ذاهب للعمل مع خادم الويب اباتشي. سيكون لديك أبدا للعمل حقا مع اباتشي مباشرة أكثر من اللازم. كنت نوعا من تكوين اباتشي قليلا عند تحديد المضيفين الظاهري أو المضيفين الخامس، وسنقوم لأنه في قليلا. ولكن أساسا، خادم الويب Apache إعداد للعمل مع نوع PHP من خارج منطقة الجزاء. وذلك ما يحدث حقا هو عندما تذهب إلى واحد من مواقع الويب الخاصة بك مثل، على سبيل المثال، المضيف المحلي مائل index.PHP أو شيء من هذا، هو يرسل المتصفح أن الطلب، ثم يجلس اباتشي هناك وارقام القيام به معها. والإجراء هو تنفيذ هذا الرمز في index.PHP و ثم ترسل تشغيله مرة أخرى. ولذلك لا يوجد ذلك. لذلك نحن نوع من تحدث عن هذا الأمر. لذلك يمكن أن تخدم فقط ملف ثابت أو تشغيل بعض التعليمات البرمجية PHP ثم قضية الاستجابة. حتى ذلك الحين سؤال المشتركة التي يمكن أن تأتي يصل شيء على ما يرام، كيف يمكننا التعامل حقا مع وجود عدة مستخدمين في نفس الوقت؟ لذلك تخيل لو كنت تكتب على شبكة الإنترنت الخادم، إذا كان لديك خادم الويب التي كنت تحاول أن يكتب في شيء مثل C أو شيء من هذا القبيل، أساسا يمكن ان يخطر لك حول كيفية هناك يمكن أن يكون نوعا من التعليمات البرمجية التي سيحصلون على الطلب، ولكن بعد ذلك عليها أن تفعل كل هذا العمل على ذلك. قد يكون، على سبيل المثال، اتصل قاعدة البيانات أو شيء من هذا القبيل. أليس كذلك؟ ومن ثم فإنه يفعل هذا النوع من تجهيز وثم إعادته الاستجابة. ذلك أن مثل عالية نظرة عامة على المستوى. ولكنها ليست واضحة على الفور كيف يمكن أن نفعل ذلك بحيث شخصين أو حتى 1،000 شخص يمكن أن تعمل مع الخاص خادم الويب في نفس الوقت. وبالتالي فإن الحل الذي يستخدم اباتشي يسمى المواضيع أو العمليات. لذلك كنت قد سمعت من هذه الشروط من قبل. لا بأس إذا كان لديك لا، ولكن مجرد التفكير حول المواضيع أو العمليات عن سبل ل نظام تشغيل أو برنامج أو مستخدم شيء من هذا القبيل أو خادم الويب إلى نوع من تنفيذ متعددة الأشياء في آن واحد. لذلك كنت قد سمعت هذا المصطلح مثل خيوط التنفيذ. حتى انها نوع من مثل أنت نوع من تعدد المهام. وإذا كنت قد رأيت على المربع الخاص بك كمبيوتر محمول، أو شيء من هذا القبيل، متعددة النواة، ما يمكنك القيام به هو ما يمكن تشغيل اثنين من المواضيع المختلفة على مختلف أجزاء من وحدة المعالجة المركزية بحيث يمكن يحدث في الواقع في نفس الوقت. لذلك هذا هو قوي حقا. وهذا هو نوع من لاباتشي الحل لهذه المشكلة. لذلك هناك نوع من القضايا مثل أي مع هذا النهج على الرغم من؟ لذا أعتقد أنا نوع من كتب لهم هناك. ولكن كلا منهم نوعا من تستخدم الكثير من الذاكرة. انها مكلفة جدا لخلق خيط أو عملية. وجزء من المنطق هو أن فقط مثل عندما كنت تشغل برنامج C مثل الرئيسي الخاص بك وبعد ذلك المكالمات وظيفة أخرى، لديها نوع من المكدس. لذلك يتطلب المواضيع أيضا تماما كومة منفصلة يمكن أن تكون كبيرة جدا. وإذا كنت تستطيع تخيل وجود طن من المستخدمين على موقع الويب الخاص بك، سيكون لديك الكثير من المواضيع المختلفة. كما أن هناك العديد من مداخن ل إدارتها وصيانتها. لذلك فمن استهلاك ذاكرة كبيرة. ومن ثم، أيضا، دعونا نقول لديك فقط وحدة المعالجة المركزية واحدة، أو دعونا نقول لديك أكثر المواضيع مما لديك تلك multicores. أليس كذلك؟ لذلك دعونا نقول كان لديك 10 المواضيع وكان لديك فقط خمس وحدات المعالجة المركزية. لديك نوع من القيام بذلك الشيء حيث يمكنك التبديل بين التيار واحد أن يدير لأنك لا يمكن تشغيل كل 10 دفعة واحدة. وهذا ما يسمى التبديل السياق. وهذا المصطلح في الواقع بضعة سياقات مختلفة، ولكن دعونا فقط كما أنها تفكر في التحول بين اثنين من المواضيع. يمكن أن تكون مكلفة جدا ل أساسا ما عليك القيام به هو أنت لديك لوقف ما تفعلونه، احفظ حالة أن موضوع تشغيل، و ثم التبديل إلى مكان آخر. فهل الجميع نوع من رؤية الدافع لماذا المواضيع و العمليات قد تكون ضخمة قليلا؟ وأنت لم ديك سؤال؟ موافق. بارد. أي شخص لديك أي أسئلة؟ موافق. حتى إذا أخذنا خطوة إلى الوراء لفترة ثانية، هناك نوع من مثل الملاحظة أننا يمكن أن تجعل حول الكثير من تطبيقات الويب. وهذا هو حقا أن الكثير منهم في الواقع لا تفعل ذلك فائدة العمل من داخل الموضوع. لذلك بدأت على أي شخص تعيين P سبعة في كل شيء؟ لذلك لا تريد أن تصف ربما بعض من الأجزاء؟ هل عملت على تسجيل الدخول أو شيء من هذا القبيل؟ الحضور: رقم كيفن شميد: OK. لا تهتم. آسف. ولكن أساسا، في مجموعة P، كنت سوف يتم صنع الكثير من نوع من استفسارات إلى قاعدة بيانات للحصول على بعض المعلومات من قاعدة البيانات. وما التعليمات البرمجية الخاصة بك سوف يتم القيام، ما هذه العملية أباتشي أو أن موضوع اباتشي سوف يتم القيام في حين أن لديها للاتصال قاعدة البيانات هو انها نوع من ستكون يجلس هناك وانها ستكون في انتظار لقاعدة البيانات للرد. الآن قد لا يبدو أن كبيرة التعامل لأن قاعدة البيانات على الخاص الأجهزة CS50، أليس كذلك؟ ولكن هناك نوعا من الشبكة الكمون هناك لأنه الآن على شبكة الإنترنت الملقم لإصدار طلبها الخاصة ل قاعدة بيانات للتواصل مع قاعدة البيانات ومن ثم الحصول على ذلك المعلومات مرة أخرى. حتى الآن انها مثل الانتظار بشكل جيد بالنسبة لي، وأنا سوف يذهب للحصول على شيء من قاعدة البيانات ومن ثم هناك الكثير من الانتظار مستمرة. فهل هذا يعقل؟ وبالنسبة لبعض الأمور انها ليست بهذا السوء. إذا كان لديه فقط، على سبيل المثال، ذاكرة الوصول، وهذا لا يروق الرهيبة I / O الكمون. وعندما أقول، I / O الكمون، ما أنا في اشارة الى مثل أي نوع من مثل المدخلات والمخرجات. ولكن الوصول إلى ملف على القرص، مثل إذا أردت أن تخدم ثابتة HTML الملف الذي تم على صفحة الويب الخاصة بي أو شيء من هذا القبيل، وأنا نوع من أن وقف قليلا، وقراءة هذا الملف في من القرص، ثم في هذه العملية أنا في انتظار. أنا لا أفعل بعمل مفيد. هذا ليس صحيحا من كل شيء، لكنه هو شائع في تطبيقات مثل مجموعة P سبعة والكثير من التطبيقات ان كنت لا تفعل في الواقع الكثير من التفكير. وعندما أقول التفكير، أعني مثل العمل الحسابية. العمل الحسابية بحيث يمكن أن يكون شيئا مثل، على سبيل المثال، أردت إرسال بريد خادم الويب التي تحسب فقط عدد فيبوناتشي النونية. لا يبدو وكأنه لا سيما متعة خادم الويب. مثل لا أتوقع أن يكون موقع ل على الفيسبوك المقبل، ولكن هذا هو بعض نوع العمل الحسابية. ويمكنك أن تتخيل أنه مع استبدال نوع آخر من اهتمام العمل الحسابية. دعونا نقول كنت تكتب شيئا أن تحسب درجات الفصل بين شخصين أو شيء من هذا القبيل. بحيث لا تنطوي على نوع الحساب، أليس كذلك؟ وحتى ذلك الحين، أن تفعل ذلك لا يزال لديك أن تفعل الكثير من الانتظار ربما ل عليك أن الاستعلام عن قاعدة بيانات للبحث حتى من هو أصدقاء مع منظمة الصحة العالمية أو شيء من هذا القبيل. حتى لا يكون هناك هذا النوع من فكرة عمل الحسابية. فهل هذا يعقل؟ هل لدى أي شخص أي أسئلة؟ يا وأعتقد أنني وضعت خوادم دردشة هناك لأن خوادم الدردشة هي نوع من مثال آخر جيد على ذلك. لا يملك خادم دردشة للقيام الكثير من التفكير. انها مجرد لانتظار الناس ل إرسال الرسائل ومن ثم عندما أنها لا، وإرسالها. موافق؟ وذلك فقط من اجل التذكير مرة أخرى، اباتشي و خوادم الويب مماثلة من هذا القبيل شوكة و الكثير من المواضيع والعمليات التي يمكن أن يكون نوع من الإسراف. لذا أعتقد أن السؤال الذي قد يأتي من الذي لا نحتاج أن يكون المواضيع والعمليات متعددة؟ ماذا لو كان لدينا واحد فقط؟ لذلك دعونا نوع من رسم صورة ما هذا سيبدو. لذلك دعونا استخدام مؤشر واحد فقط. موافق؟ حتى مجرد تخيل هذا مع موضوع واحد. دعونا نفترض أننا لم نفعل حقا أن فائدة بكثير - وعندما أقول مفيدة، أعني العمل الحسابية - في تلك المواضيع المتعددة من قبل. لذلك دعونا نوع من توطيد كل شيء في موضوع واحد. فماذا لو كان لدينا واحد موضوع هذا النوع فقط يدور حولها في حلقة و باستمرار الشيكات فعلت شيئا يحدث جديد. ذلك على سبيل المثال، حدث شيء جديد قد يعني حصلت شيئا من قاعدة البيانات، أو شخص ما أرسلت لي طلب HTTP جديدة. حتى تلك هي نوع من الأحداث أن يحدث، أليس كذلك؟ ثم ما يمكنني القيام به عند أولئك جديدة الأمور تحدث في هذا الموضوع نفسه التنفيذ، وهذا موضوع واحد من التنفيذ، يمكن أن أدعو بعض التعليمات البرمجية التي أن التعامل مع هذا الشيء بالذات. ذلك على سبيل المثال، إذا حصلت على شيء يعود من قاعدة البيانات، ويمكن تشغيل بلدي جزء صغير منه الحسابية التي في الواقع تعد مجرد شيء ل إرسال إلى المستخدم. حتى يفعل ذلك النوع من معنى؟ ولكن ما هي حقا الآثار المترتبة على ذلك؟ أليس كذلك؟ لأننا قد كتبت الكثير من التعليمات البرمجية التي - وأنا ذاهب لمجرد القفز إلى الأمام في الشرائح اذا كان هذا موافق. لذلك إذا كنت لا تمانع، وأنا فقط ذاهب الى اتخاذ خطوة إلى الوراء. لذلك هذا النوع من الشيء هو دعا حلقة الحدث. موافق؟ وانها نوع من الأساسي الفكرة وراء Node.js. وذلك ما يقوم به Node.js حقا بمثابة شبكة الإنترنت الخادم هو هناك موضوع واحد التي هي في الأساس تدور في حلقة وكأنه بينما نوع واحد من تحت غطاء محرك السيارة من Node.js هذا باستمرار التحقق، لم تصلنا أشياء جديدة؟ وبعد ذلك سيتم تشغيل معالجات التي تقوم بإعدادها. ولكن السؤال الذي ينبغي طرحه هو جيد، كيف يمكننا تحقيق ذلك مع الأشياء الموجودة؟ حتى أضع سطر من التعليمات البرمجية C هنا أن يبدو أساسا انها مثل فتح ملف، أليس كذلك؟ أنا وقالت إنها جاءت للتو مع الألبوم. لذلك اضطررت لفتح ملف جديد لها. وبالتالي فإن الطريقة رمز C من أجل التشغيل - وأعتقد أن السبب اخترت ملفات لأن هذا هو نوع من مدى العمل I / O الذي فعلناه في C في الشعور بأن هناك مدخلات الانتاج. لذلك نحن ندعو هذه التعليمات البرمجية التي يفعل هذا و مفتوحة. ثم على السطر التالي لدينا البرنامج، يمكن ان نعمل الآن مع و. ولذلك فإن هذا من شأنه أن يكون مثالا لشيء هذا مثل متزامن أو حجب لأن في ذلك السطر الأول هناك ننتظر حتى نحصل الحصول على الملف المفتوح. لذلك على السطر الثاني، ونحن نعلم أننا يمكن أن تعمل مع و، ولكن هذا يعني أن أن السطر الثاني لا يمكن تشغيل حقا حتى يتم السطر الأول. فهل هذا يعقل؟ ولذلك فإن هذا من شأنه أن يكون سيئا لوضع في معالج الحدث. والسبب في ذلك هو أن هذا النوع من ينتظر، أليس كذلك؟ لذلك هذا ستعود لنا مرة أخرى لنفس الشيء. والآن لن يكون لدينا حتى صالح المواضيع متعددة أو العمليات لأننا حصلنا موضوع واحد في Node.js. فهل هذا يعقل أن الجميع؟ الحضور: انتظر. فما هو الاستبدال؟ كيفن شميد: أوه، لذلك نعم. لذلك أنا ذاهب للوصول الى استبدال. موافق. فماذا لو كان لدينا شيء التي بدت مثل هذا؟ لذلك ماذا لو أنا الآن تحرير و فتح قليلا؟ لذلك أنا يمر في نفس حجتين كما كان من قبل. ما زلت أحب أغنية جديدة التي خرجت بها. ولكن أنا تمرير الشيء الثالث الذي وهذا المتغير يسمى التعليمات البرمجية. ولكن ما هو رمز الواقع في هذا السياق؟ هو مثل متغير C العادية؟ انها وظيفة، أليس كذلك؟ والتي قد تكون غريبة بعض الشيء ل أنا فعلا مثل يمر الآن يعمل في وظيفة أخرى. حتى بضعة أشياء لملاحظة حول هذا الموضوع. واحد، وأنا في الواقع لا يدعو وظيفة متاحة. لذلك لم تشاهد الرمز مع PAREN اليسار، PAREN الحق. أنا مجرد مرور في التعليمات البرمجية. وC، وهذا ما سوف تفعل في الواقع وتعطيني مؤشر إلى أن الفعلية رمز، ثم هذا يمكن تشغيله. ولكن مجرد التفكير في الامر كما كنت تمرير رمز لتشغيلها عند يتم فتح هذا الملف. ولكن ما يعنيه هذا هو أن الآن بقية برنامجي الذي يمكن أن تفعله غيرها من الاشياء، ويمكن الاستمرار به أخرى الاشياء بينما نحن، وليس الانتظار حقا، ولكن لديهم فقط في الجزء الخلفي من رؤوسنا التي عندما يكون هذا الملف مفتوحا، المدى الذي التعليمات البرمجية في أعلى. فهل هذا يعقل؟ والآن الفكرة وراء Node.js هو أن التعليمات البرمجية في الاشياء افعل مع و ينبغي أن تكون جزءا قصيرة جدا وبسيطة ومباشرة وألا يكون حقا حسابيا مكثفة جدا. انها قد تضطر الى فتح ملف آخر، ولكن وينبغي أيضا أن تكون سريعة جدا لأنه ينبغي أن أقول مجرد القيام و أخرى فتح ومن ثم استدعاء هذا الرمز الأخرى. حتى مجرد أن يكون واضحا تماما، وو فتح أن يفعل أغنية كاتي بيري الجديد القيام به MP3، والتي سيكون لجميلة العودة بكثير على الفور. وبعد ذلك يمكننا مواصلة القيام فقط الأشياء الأخرى لأن كل ذلك الآن و دعوة مفتوحة لا اقول هو الأساس كود مفتوح المصدر و فتح هذا الملف وعند الانتهاء من ذلك فتح هذا ملف أو عند الحصول عليه مرة أخرى، ثم تشغيل هذا الرمز. لكنه لا فعلا تشغيل هذا الرمز. وكان لديك سؤال؟ الحضور: ويبدو أن كنت تعني قليلة مرات أن إضافة حسابيا كود مكثفة نوعا من كسر [غير مسموع] نظام مدفوعة. [غير مسموع]؟ كيفن شميد: هذا سؤال كبير. لذلك أنا فعلا مثالا على كيفية هل يمكن دمج حسابيا كود مكثفة في قليلا. لذلك عندما نصل إلى أمثلة التعليمات البرمجية، سوف أكون على يقين بأن لسحب واحد. هو أن موافق؟ شكرا لك. ما كان اسمك؟ الجمهور: هارون. كيفن شميد: هارون إحضار جدا نقطة جيدة، وهي أنه إذا كان لي بعض التعليمات البرمجية مكثفة حسابيا في وتفعل الاشياء مع جزء و، بقية لا يمكن تشغيل برنامجي ولا يمكن الاستماع طلبات جديدة أو أي شيء حتى عن يتم الانتهاء من هذه الأشياء. حتى إذا أنا أكتب رمز عقدة بشكل عام ما لم نفعل شيئا وكأنني ذاهب تشير إلى وقت لاحق عندما ننظر إلى أمثلة التعليمات البرمجية، يجب أن أكون على يقين من أن قانون بلدي لا ربط هذه الحلقة الحدث. فهل هذا يعقل؟ موافق. بارد. حتى Node.js يقدم هذا الإطار يمكنك بناء هذه الحدث مدفوعة ملقمات مع. لذلك لديه هذا النوع من غير متزامن غير مؤمن I / O المكتبات، في حين مكتبات C القياسية التي كنا العمل مع، مثل إذا كنت فقط استخدامها في بنفس الطريقة التي قمنا تم استخدام لهم و يفتح و الاشياء، تلك هي منع ل لديك فعلا إلى الانتظار ل هذا الملف لفتح. ولكن Node.js يمنحك ذلك و يربط أساسا إلى V8 جوجل محرك جافا سكريبت والذي هو السبب أن كروم هو سريع جدا في معالجة جافا سكريبت لأنه يحتوي هذا المحرك V8. حتى وأنا أعرف أن يبدو وكأنه واحد من تلك WWDC المؤتمرات المطور شيء حيث أنها مجرد رمي حفنة من عدد الأشياء إلكتروني لمعالجات وأقول هذا هو بارد جدا. وإنما هو بارد أنهم فعلوا هذا لأن جافا سكريبت - أو ربما إذا كنت لم تكن مألوفة مع جافا سكريبت بعد، لأن لم يكن لدينا المحاضرات على ذلك - ولكن جافا سكريبت هو تفسير اللغة. وهذه نقطة مهمة جدا. لذلك فمن المهم لدينا على شبكة الإنترنت خوادم لتكون سريعة، أليس كذلك؟ وإذا كنا مجرد تشغيل الجافا سكريبت التعليمات البرمجية التي تم تفسيرها مع عادل أي مترجم القديمة قد يكون بطيئا. فوائد عقدة حتى من وجود هذا بسرعة فائقة V8 مترجم. وأنا لا أعرف إذا كانوا أطلقوا عليه اسم لأن صفعة V8 في الجبين الشيء، ولكن موافق. حتى لقد أعدت بعض الأمثلة في هذا العنوان. بعد الندوة، وأنا نوع من الذهاب إلى الحديث عن كيف يمكنك الحصول على مجموعة عقدة حتى، لكنه الآن، أريد فقط نوع من على المشي من خلال بعض الأمثلة التعليمات البرمجية. حتى إذا كنت تريد أن تتبع على طول، كل شفرة المصدر متاحة هناك. موافق؟ لذلك سأترك هذا الرابط للحصول على القليل. ثم أنا مجرد الذهاب الى التحول إلى المحطة. هو جيدة مع الجميع هذا العنوان؟ لذلك أنا ذاهب للتبديل أكثر لمحطة بي هنا. وحتى هنا في التعليمات البرمجية التي لدي لهذا اليوم. لماذا لا نبدأ ملف simpler.js؟ الشيء الآخر هو أن كل هذا كود سوف تكون مكتوبة في جافا سكريبت الذي قد يكون أو قد لا تكون على دراية. أعتقد بضعة أشياء هي أن الكثير من شفرة جافا سكريبت هو نوع من بناء الجملة والبنية هي مشابهة جدا ل C، حتى تتمكن من نوع من يستلم السلعة كما تذهب على طول. لقد حاولت أن أكتب الكثير من رمز يبدأ لهذا بطريقة ل مماثلة إلى C بحيث انها أكثر من ذلك بقليل للقراءة. ولكن ونحن نتقدم، سأكون مما يدل على بعض إضافية ملامح جافا سكريبت التي هي نوع من باردة. ولكن دعونا ننظر في هذا البرنامج العينة. أعتقد انها قطعت كل شيء من هناك. أنا ذاهب لمجرد أن إصلاح حقيقي سريع إذا كان هذا هو موافق أم لا. أنا لا أعرف ما هو هذا يجري القيام به. هو أن أفضل قليلا؟ تستطيع أن ترى في فار والاشياء؟ موافق. وبالتالي فإن السطر الأول هو مثل جافا سكريبت نسخة من متغير الإعلان. وذلك فقط لتسليط الضوء على هذا ما من شأنه تبدو وكأنها في C. لذلك هذا هو تماما مثل يساوي لي قائلا المؤشر ثلاثة أو شيء من هذا القبيل. لذلك أنا لم يحدد نوع. جافا سكريبت لديها أنواع، ولكنها ل جدا كتبته حيوي في الطبيعة، لذلك لم تقدم أي نوع من نوع على ذلك. وهكذا كان مجرد فار. هذا مثل متغير. موافق؟ وادعو هذا HTTP متغير. وعلى بلدي الجانب الأيمن، لدي التعبير الذي أريد أن أضع في HTTP. ويقول هذا يتطلب HTTP. لذلك هذا هو نوع من مشابهة لتشمل. انها أكثر قليلا مثل قوة من وتشمل بمعنى أن تشمل أن مجرد نسخ ولصق رأس ملف لنماذج وظيفة أو مهما مع تعريفات نوع. ولكنها تتطلب يجري في الواقع للحصول لنا رمز. حتى تتمكن من التفكير في الأمر على النحو استيراد بعض التعليمات البرمجية. حتى في مكان ما من وحدة Node.js النظام أو أيا كان، لديهم كل هذا رمز الملقم HTTP لذلك أنا فقط جلب لأنها بلدي استخدام الشخصي في هذا البرنامج. موافق؟ حتى ذلك الحين لدي هذه الوظيفة أنني قد كتبت. ولاحظ أنني لم يكن لديك لتحديد نوع الإرجاع أو نوع من الحجج مرة أخرى. ذلك النوع من كتابتها فضفاضة في هذا النوع من معانيها. حجتين أنه يأخذ في، طلب والاستجابة لها. ذلك أن المفهوم نوع من مثل مألوفة من الصورة التي كانت لدينا على الشاشة قبل ل نحصل على هذا الطلب أننا يكون من المستخدم. ثم لدينا ردا على ذلك يمكن أن نكتب الأشياء ل. وبالتالي فإن السطر الأول من هذا لا res.writeHead 200 ثم هذا نوع المحتوى النص العادي. لذلك دعونا قطعة هذا بصرف النظر قليلا. لذلك دعونا نركز فقط على res.write لقليلا. حتى الكتابة هو الأساس، وإرسال الرأس، هي مجرد وسائل لنوع من الكتابة خارج الأشياء إلى الاستجابة. موافق؟ حتى كتابة الرأس، إذا يتذكر أي شخص من محاضرة HTTP، هل الرجال تذكر رؤوس في أعلى الشيء HTTP؟ فلماذا لا أنا فقط التجريبي رؤوس حقيقية سريعة. من شأنها أن تكون مفيدة؟ أو ينبغي لنا مجرد نوع من - موافق. بالتأكيد. لذلك عندما يذهب المتصفح إلى google.com أو شيء من هذا القبيل، هناك في الواقع أكثر من ذلك بقليل - هذا هو مثل سرا - هناك مثل أكثر قليلا من المعلومات الذي يأتي من خلال أنابيب من مجرد البحث قليلا وكل شيء. لذلك لتظهر لك هذا، وانا ذاهب لاستخدام برنامج يسمى الضفيرة. موافق؟ لذلك هذا هو شيء يمكنك تشغيلها في سطر الأوامر ماك OSX الخاص بك أو في الأجهزة أو أيا كان. وحتى لو لم الضفيرة HTTP google.com، أنا ذاهب لرؤية HTML. وهذا هو، في الإنصاف، فقط HTML هذا النوع من يقول لك إعادة توجيه إلى الشبكة العالمية إذا متصفحك لا التعامل مع تلقائيا إعادة التوجيه. لذلك هذا هو مجرد HTML، ولكن انا ذاهب إضافة إلى هذه الضفيرة اصلة أنا العلم. موافق؟ وهذا سوف تظهر لي رؤوس. لذلك هذا هو أيضا المعلومات التي تأتي من خلال عندما أحصل على هذا الرد. موافق؟ حتى في القمة، ترى هذا HTTP 301 تتحرك بشكل دائم. وهذا هو نوع من المهم ل هذا يشير إلى رمز الحالة. وبالتالي فإن 301 هنا هي رمز الحالة، التي هي في الأساس مجرد عدد صحيح أن تخبر المتصفح أو أيا من هذه القراءة، إذا كنت أدعي أن كنت المتصفح وترونه هذا، أساسا الآن إذا نظرتم وأن تشاهد 301، كما تعلمون لدي أن تفعل شيئا خاصا على أساس 301، أو شيء من هذا حدث خاص على أساس 301. لذلك يقول انتقلت بشكل دائم. وبعد ذلك، في الأساس، لدينا حفنة من أزواج قيمة المفتاح. حتى نحصل على الموقع هو www.google.com. ثم نوع من كل هذه الأشياء الأخرى، ولكن في الأساس، ما هو الموقع القول هو الموقع الجديد هو على www.google.com. حتى الآن إذا ذهبت إلى google.com، عليك نوع من رؤية هذا النوع من المتصفح وميض لثانية ثم تحولك الحق في العودة إلى www.google.com. وبالتالي فإن الاستجابات يمكن أن تحتوي هذه الرؤوس. وبضعة أشياء أن نشير إلى. لذلك دعونا نقول أننا نجحنا فعلا في زيارة صفحة على شبكة الإنترنت. لذلك اسمحوا لي ان اذهب ل- ما هو موقع جيد؟ أنا سيئة في التفكير الخير المواقع على الفور. الحضور: ويكيبيديا. كيفن شميد: OK. دعونا نفعل ويكيبيديا. حتى هنا وانتقلت. يا الانتظار. كان لي؟ نعم، كنت. موافق. لذلك أنا حصلت على القيام شبكة الاتصالات العالمية. لذلك أنا ذاهب الى القيام به على شبكة الاتصالات العالمية. وكما ترون، وهنا كل HTML أن المتصفح سوف معالجة لويكيبيديا. ولكن إذا أظل هنا التمرير، ما سوف نرى في الجزء العلوي - نجاح باهر، وهناك الكثير من HTML في ويكيبيديا - ولكن ما أستطيع أن أرى في أعلى هنا هذا رمز الحالة 200 عارض فيما يتعلق 301 الذي رأيته في وقت سابق. وتلاحظ أن لديها لطيفة موافق ودية لأنها المقبل. لذلك هذا هو مثل قانون الأحوال جيدة. لا تبدو هذا العدد 200 مألوفا؟ نعم لأنه عندما فعلت simpler.js، كتبت 200 هناك. لذلك هذا ما يقول في الأساس نقول لل المتصفح أو من يحاول الحصول على هذا أنها كانت ناجحة. أو هذا النوع من كأننا كانت ناجحة جدا. وهناك هذا النوع من بناء جملة خاص في جافا سكريبت لإعلان خريطة هذه المفاتيح مثل نوع المحتوى وهذه القيم مثل النص العادي. حتى إذا نظرتم الى استجابة أننا حصلت على العودة من قبل ويكيبيديا، - انا ذاهب الى محاولة التمرير أسرع قليلا - لديك هذه المفاتيح مثل الخادم وهذه القيم اباتشي. لذلك كنت قد حصلت على المفاتيح والقيم. ويمكنك تحديد ذلك في عقدة ما لإرسالها مرة أخرى. لذلك هذا هو في الواقع نوع من، في بعض طرق، وفي بعض الطرق انها ليست حقا، ولكن هذا مستوى أقل قليلا من رمز PHP التي قد تكون الكتابة للP تعيين سبعة لPHP و اباتشي نوع من رعاية بعض هذه الأشياء بالنسبة لك. في PHP، يمكنك تجاوز الافتراضي السلوك من خلال كتابة رؤوس الخاصة بك. ولكن لأغراض هذا، نحصل على لكتابة رؤوس منطقتنا. فهل هذا الخط معنى ل الجميع، خط الكتابة رئيس؟ موافق. رهيبة. حتى ذلك الحين ما أقوم به هو أنني انهاء استجابة بالقول مرحبا العالم. موافق. ولكن هذا مجرد وظيفة دعا طلب المعالج. حتى الآن أنا فعلا للقيام نوع من شيء مع هذه الوظيفة، أليس كذلك؟ حتى هنا ما أقوم به هو وجود هذا الخط الذي لا يساوي الخادم فار HTTP.create الخادم، وبعد ذلك تمر في معالج الطلب. لذلك هذا هو نوع من عقدة طريقة إنشاء ملقم. وتلاحظ أن أنا تمر في معالج الطلب. لذلك هذا هو قول createServer الوظيفة التي أريد منك أن تجعل لي الخادم، وعندما يتلقى هذا الخادم وردا على ذلك، أنا بحاجة لكم لنسمي هذا طلب وظيفة معالج. موافق؟ بحيث خط الى حد كبير ينتهي على الفور. بحيث يتم خط الخادم فار الحق بعد أن تفعل ذلك الى حد كبير. أعني، أن لديها لاقامة بعض الداخلية الدولة أن نعرف أن عملتم ل استدعاء هذه الوظيفة طلب معالج، ولكن انها ليست الذهاب الى الجلوس هناك و يقولون ان للمستخدم إرسالها لي طلب حتى الآن؟ وقد أرسلت المستخدم لي طلب حتى الآن؟ لذلك لا يمنع. موافق؟ فماذا سيفعل هذا هو الأساس يخزن الآن مؤشر إلى هذا الرمز، هذه الوظيفة معالج الطلب، ومن ثم سيتم تشغيل هذا الرمز عندما شخص يجعل الطلب. ثم نفعل server.listen. في 1337 كان هناك التعسفي جدا. لم يكن لدي أي سبب معين لاختيار هذا العدد. كان عشوائيا تماما. ولكن الذي يحدد فقط الميناء. لذلك معظم خوادم الويب سترى أنها استخدام المنفذ 80 لأن هذا النوع من مثل هذه الاتفاقية. حتى إذا ذهبت إلى شيء من هذا القبيل، أنا لا أعرف، Wikipedia.org، وأنا وضعت القولون 8 - أوه نجاح باهر، لا يمكنك رؤية ذلك. أنا آسف. ولكن إذا كنت تفعل ويكيبيديا - أنا أكتب هنا فقط بحيث انها واضحة على الكاميرا. ولكن إذا كنت تأخذ هذا في مستعرض مع القولون 80، التي تحدد ذهاب إلى Wikipedia.org في المنفذ 80. لذلك فمن مثل كيف له الولايات المتحدة منافذ متعددة مثل حيث يمكنك شحن الأشياء إلى نوع من. لذلك فمن مثل يذهب إلى هذا خاصة وضع على هذا الخادم. موافق. لذلك اخترت فقط 1337. هناك مجموعة كاملة من الأرقام التي يمكنك اختيار. لم يكن ذلك خاصا تماما. ولكن ما أنا بصدد القيام به الآن وانا ذاهب لتشغيل عقدة. اسمحوا لي أن أدخل في الواقع أن زوجين خطوط أسفل بحيث يمكنك رؤيتها. انا ذاهب الى القيام به عقدة، وأنا ذاهب لتشغيل simpler.js. وسوف نتحدث عن كيفية الحصول على تعيين العقدة حتى في قليلا. ولكن الآن انها مجرد تشغيل الخادم. ذلك شيء واحد يمكن أن نحاول والتي قد لا يكون ذلك إثارة هو ما نستطيع في الواقع محاولة الوصول إليه في الضفيرة. حتى أتمكن من القيام الضفيرة، وبلدي الجهاز هو المضيف المحلي. سترى أيضا هذا المكتوب مثل هذا في بعض الأحيان. المضيف المحلي و127.0.0.1 هي نوع من مثل جهاز الكمبيوتر المنزلي. لذلك فمن مثل التحدث إلى جهاز الكمبيوتر الخاص بك. موافق. ومن ثم أستطيع أن أقول 1337. حتى إذا قمت بتشغيل هذا الخط من التعليمات البرمجية، تقول مرحبا العالم. وإذا أردت أن أرى تلك الأشياء التي كان النص نوع المحتوى عادي أو أيا كان، حتى أتمكن من وضع هذا هنا. ولاحظ أنه لا يقول موافق. ولدي نص عادي. وبعد ذلك هناك نوع من هذا كله الأخرى الاشياء التي سوف تضيف عقدة في هناك بالنسبة لي. هذا ليس السوبر الهامة. أعني، هناك نوع من التقنية جوانب في ذلك هي نوع من بارد للحديث عنها، ولكن فقط لاظهار لكم، وأنا أيضا لديها القدرة على تغيير هذه حولها. حتى أستطيع أن أضيف فقط حفنة من الاشياء من هذا القبيل. ثم الآن، إذا كنت تنظر في بلدي الإخراج، وسوف يكون ذلك. لذلك فان هذه الرؤوس تعني أشياء معينة إلى المتصفحات وأشياء من هذا القبيل. ويمكن أن أقول رؤوس أساسا متصفح كيفية الرد على شيء. إذا كنت قد سمعت من أي وقت مضى من الكوكيز قبل، أو إذا كنت قد سبق لك ازعاج بواسطة صفحة ويب وضع الكوكيز، أو تشغيل أو كتلة كوكي شيء من هذا القبيل. يمكنك تعيين الواقع الكوكيز في هذه الرؤوس. لذلك يقولون مستعرض كيفية السلوك في بعض الحالات. موافق. لذلك كان أن simpler.js. هل لدى أي شخص أي أسئلة على أن ملف التعليمات البرمجية المصدر؟ موافق. بارد. لذلك دعونا إزالة ص من ذلك وإلقاء نظرة على simple.js. لذلك هذا هو الى حد كبير نفس البرنامج. أنا فقط كتبت ذلك بشكل مختلف قليلا لأنني أردت أن ترتب من تسليط الضوء بعض ميزات جافا سكريبت. لذلك نلاحظ أن معالج طلب وقد اختفت تماما وظيفة. أوه نعم، هل لديك سؤال؟ الجمهور: نعم، الحجج التي تم تمريرها إلى أن وظيفة، ما هي؟ كيفن شميد: حتى تلك هي جافا سكريبت الكائنات. في وثائق Node.js، فإنه يقول أساسا ما هي الطرق تتوفر عليها. نحن يحدث لمجرد أن يكون لديك الوصول إلى هذا الأسلوب يسمى رئيس الكتابة ونهاية وأشياء من هذا القبيل. ولكن هناك مجموعة كاملة أكثر الأساليب. وعلى سبيل المثال، وكأنه واحد منهم على وجه الخصوص على تفصيل، يمكنك أن تفعل شيء من هذا القبيل والتي سوف rec.method اقول لكم ما اذا كان الحصول على HTTP أو طلبات HTTP آخر و أشياء من هذا القبيل. لذلك هناك جميع أنواع مختلفة الخصائص، لكنها على حد سواء جافا سكريبت الكائنات، ولديهم فقط وظائف المرفقة بها التي يمكن أن يكتب أشياء ل. موافق؟ لذلك نلاحظ أن معالج طلب هو ذهب تماما. ولكن الرمز الذي كان لي في الطلب معالج لا يزال هناك. لا يزال لدي هذا res.writeHead وأنا لا تزال لديها هذا res.end. وما هو هذا مثالا في جافا سكريبت هي هذه الفكرة ل وظيفة مجهول. والمجهول هو مثل الاسم المناسب لذلك لأنه لا حرفيا يكون له اسم. ليس هناك طلب وظيفة معالج في هناك. ليس له اسم، لكنه لا يزال هو أخذ حجة. لذلك أنا لا تزال حصلت تفصيل والدقة. وأنا لا تزال لديها التعليمات البرمجية. هذا على ما يرام تماما شفرة جافا سكريبت. حتى أتمكن من إعلان وظيفة من دون إعطاء صراحة اسم. انها مربكة قليلا في البداية. هناك بعض الأشياء المفيدة مثل ما يمكنك القيام به مع هذه الوظائف المجهول. هل لدى أي شخص أي أسئلة حول هذا الموضوع، أو هل هو موافق للتو، في الوقت الراهن، نوع من تقبل مجرد أنه سوف تفعل الشيء نفسه؟ نعم؟ الحضور: هل الوظائف أولا الطبقة في جافا سكريبت؟ كيفن شميد: هم الأولى الطبقة في جافا سكريبت. ونعرف تماما أن هذه المفاهيم ل ويمر في وظيفة مجهول مثل هذا ينطبق على جافا سكريبت التي قد يكتب في المشروع النهائي الخاص بك ل متصفح الإنترنت أيضا. ذلك على سبيل المثال، في الجافا سكربت في المتصفح الخاص بك، كما انها نوعا ما حدث مدفوعة بمعنى أن ما عليك يكون هو عندما يقوم المستخدم بالنقر فوق هذا زر، أريدك أن تشغيل هذا الرمز. حتى انها نفس النوع من أفكار العميل عند النقر بالماوس أو أنها الماوس فوق بعض الصورة على الخاص صفحة ويب، تشغيل هذا الرمز. يمكن أن تنطبق على الملقمات. ولهذا النوع من مثل مثيرة السبب جافا سكريبت هو حقا الناس مناسبة أو يظن البعض انها لغة مناسبة لهذا النوع من الخادم السائق الحدث لأن لديك هذه الوظائف المجهول. لديك فكرة كاملة من هذا الرمز غير متزامن. موافق. أي شخص لديك أي أسئلة؟ موافق. لذلك كان أن simple.js. لذلك دعونا نلقي نظرة على واحد أكثر أو أكثر زوجين. لذلك هذا هو sleep.js. وذلك هو أحد دراية وC النوم وظيفة؟ ربما من إحدى المحاضرات السابقة أو شيء من هذا القبيل؟ وذلك أساسا يمكن أن تمرر في أعتقد أن عدد الثواني، أو إذا كنت تستخدم U النوم عدد من ميلي ثانية أو نانو ثانية. وأساسا فإن البرنامج تتوقف فقط الترشح لهذا المبلغ من الزمن. أليس كذلك؟ وبعد ذلك سوف يستيقظ في نهاية المطاف و ثم انها سوف تواصل تشغيل فقط البرنامج. لذلك هذا النوع من خادم يعطي الانطباع من النوم. لذلك نلاحظ أن لدينا نفس res.writeHead 200 مع رأس كما من قبل، ولكن بعد ذلك نحن ندعو الى هذا وظيفة تسمى مجموعة المهلة. تعيين مهلة باللغات متصفح الويب الخاص بك جوجل كروم أو سفاري أو أيا كان. وأساسا ما تقوم به هنا وانها آخذة في وظيفة. إشعار، مرة أخرى، انها وظيفة مجهول. ولهذا النوع من بارد لأننا باستخدام وظيفة مجهول داخل وظيفة المجهول الذي يمكن أن يكون غريب قليلا. لكنه أخذ هذه المهمة، والتي هي في الأساس قائلا - والطريقة هذه يعمل في 5،000 ميلي ثانية، أريد لك لتنفيذ تلك المهمة التي ينتهي مجرد استجابة ويكتب مهلا. ولذلك فإن هذا يعطي الانطباع من مثل النوم، ولكن هذه الطريقة في الواقع يعمل هو سنقوم من خلال تشغيل هذا الخط بسرعة كبيرة. نحن مجرد كتابة شيء ما. وبعد ذلك سنقوم أيضا من خلال تشغيل هذا الخط بسرعة كبيرة. لذلك نحن لن الواقع إلى الانتظار لمدة خمس ثوان. نحن ذاهبون لمجرد تشغيل هذا الرمز على الفور. وبعد ذلك هناك، ومرة ​​أخرى، هذا القليل حلقة الحدث الذي لديه الآن هذا الشيء السجلات التي هي في الأساس فقط يذهب باستمرار حولها في دائرة وتبحث في الساعة في واحد موضوع والمثل، لديه خمس ثوان مرت حتى الآن؟ ثم عندما يرى أن الثاني انتقلت اليد مثل خمس ثوان أو أيا كان، ومن ثم يستيقظ ويقول: أوه، ماذا علي أن أفعل؟ يا ولدي لتشغيل هذه التعليمات البرمجية. وبعد ذلك سيكون ل تشغيل res.end مهلا. ذلك مرة أخرى، ونحن في انتظار أبدا هنا. حتى انها ليست أن هذا الرمز داخل هذه الوظيفة هو ذاهب الى اتخاذ خمسة ثانية لتشغيل. سيتم تشغيل هذا الرمز الى حد كبير على الفور، على الأقل بالنسبة ل الخمس ثواني التي كنا نتحدث في وقت سابق عن قبل. ذلك فقط لاظهار هذا في العمل، أستطيع أن أفعل Node.sleep.js. وفعلت أنا لخبط شيء؟ ربما. آسف. دعونا نرى ما يمكننا القيام به لإصلاح هذه. موافق. ذلك بالتأكيد استخدام Node.js. أنا مجرد مزاح. موافق. ثانية واحدة فقط. موافق. أنا أعرف ما هو عليه. وبالتالي فإن المسألة هي ان في التبويب الأخرى بلدي هنا، لقد تم تشغيل عقدة بالفعل على هذا العنوان نفسه، 1337. ذلك الخطأ الذي رمى هذا، إذا نظرنا في ذلك الحقيقية عن كثب، هو عنوان في استخدام، EADDRINUSE. لذلك كنت بالفعل باستخدام 1337 هنا. حتى لو كنت اغلاق هذا الخروج، وبعد ذلك أنا الآن محاولة تشغيل هذا، ونأمل، كل شيء وسوف يكون على ما يرام. موافق. لذلك يمكن أن يكون واحد فقط نوع الشيء الاستماع على منفذ في آن واحد. وهناك حل آخر كان بالنسبة لي لمجرد تعديل هذا البرنامج وجعل أن يكون مثل 1338 أو شيء من هذا القبيل. ولكن الآن النوم قيد التشغيل. لذلك دعونا نحاول فعلا بها في المتصفح هذه المرة لأنها مملة قليلا لنرى في محطة. لذلك أنا ذاهب لمجرد أن تذهب إلى 127 عنوان جديد في 1337. وإذا كان يمكنك ان ترى ذلك - أنا لا أعرف إذا كنت تستطيع - ولكن بلدي المتصفح أخذ جدا، طويلة جدا الوقت لتحميل أو ما شابه خمس ثوان. ثم بعد ذلك، فإنه في نهاية المطاف انتهت الاستجابة. وأنت لا يمكن أن نرى ذلك لأن الشيء يتم نقل أكثر قليلا، ولكن إذا قمت بعمل هذا أصغر قليلا، وكنت يمكن أن نرى ذلك يقول مهلا. لذلك أنا حصلت على مهلا، ولكن بعد خمس ثوان. وأنه قد يكون قليلا أكثر نظافة لرؤية هنا على المحطة، لذلك أنا تنوي القيام به أ - دعونا نفعل هنا - دعونا نفعل ذلك العنوان الضفيرة مرة أخرى مع 1337. وليس لدي سوى نوع من الجلوس هنا لمدة خمس ثوان. ولكن لاحظ أن الملقم لا يمكن أن يقبل استجابات جديدة. لذلك فإنه يطبع مهلا. والتجريبي هذا، أساسا ما يمكنني القيام به في هذا التبويب الأخرى - لذلك دعونا نقول أن أفعل ذلك في علامة تبويب أخرى، انا ذاهب الى القيام الضفيرة ونفس الشيء مرة أخرى. وانا ذاهب الى محاولة لركلة هذه الرجال خارج في نفس الوقت. لذلك أنا ذاهب للقيام بذلك، وأنا الذهاب الى السباق أكثر من هنا وأنا سيفعل ذلك مرة أخرى. ودعونا تجعل من ذلك أنك يمكن رؤية كل منهم. أن واحدة مطبوعة مهلا وأن أحد طبع يا كل وسيلة في - دعونا نفعل ذلك التجربة مرة أخرى. في الواقع، دعونا استخدام هذا خداع، إذا كان هذا هو موافق. لذلك أنا ذاهب الى استخدام شيء القذيفة التي يسمح لي لتشغيل أساسا نسختين هذا البرنامج في نفس الوقت. لذلك سوف تشغيل البرنامج الأول و البرنامج الثاني بشكل متواز. حتى الآن إذا كنت اضغط Enter، انها تسير لجعل هذا الطلب الى حد كبير على الفور في نفس الوقت. لذلك دعونا نعطي هذه رصاصة واحدة. وحتى الآن تلاحظ ذلك يقول عمليتين. وإذا كنت غريبة، أن 27،000 الرقم هو أساسا معرف العملية. ومن ثم لاحظ، فإنها مطبوعة مهلا في نفس الوقت. لم يكن مثل كان علينا أن ننتظر خمس ثانية واحدة ثم بعد ذلك، خمس ثوان في وقت لاحق الحصول على الثانية. بحيث انها نوع من، في بعض النواحي، انها لا أدلة حقا، ولكن هذا أدلة بديهية أنها ليست مجرد مثل الانتظار لمدة خمس ثوان ومنع الموضوع كاملا مع محتوياته. موافق بارد. لذا سأله هارون سؤالا في وقت سابق أن كان، حسنا ماذا لو أننا لم نفعل شيئا - نعم؟ الحضور: انتظر. كيف يختلف هذا عما printf عازلة، على الرغم من؟ لا تفعل ذلك تلقائيا؟ لماذا لدينا ما يدعو للقلق حول هذا الموضوع؟ كيفن شميد: أوه، هل يمكن أن ويقول أن أكثر مرة واحدة؟ الحضور: لا أحب عازلة printf تفعل الشيء نفسه بالضبط؟ كيفن شميد: المخزن المؤقت printf؟ الجمهور: نعم. موافق. لم يكن في واحدة من المسابقات كانوا نتحدث عن كيفية إذا كنت الحق printf شيء ثم انها قد وقفة واحدة الثانية، ثم لديك عشرة حلقة مرات، وسوف ننتظر عشر ثوان و ثم printf كل شيء معا؟ كيفن شميد: أوه، حسنا. الحضور: هل تفعل الشيء نفسه الشيء ثم في هذه الحالة؟ كيفن شميد: لذا كان السؤال أساسا في واحدة من المسابقات السابق أو شيء من هذا، كان هناك شك في أن أساسا إذا كنت أقول الطباعة و 10 أشياء في وقت واحد ومن ثم ينام مثل في عملية طباعة تلك خارجا، في نهاية لسبب ما، فإنه سوف مجرد تفريغ كل تلك على الشاشة. حتى لا يكون هناك نوع من اثنين مختلفة المفاهيم هنا. لذا أعتقد شيء واحد هو أنه، في هذا القضية، ونحن نتعامل مع اثنين مختلفة نوع من الناس يسأل الخادم للأشياء في نفس الوقت. والسبب أن هذا النوع من printf ينتظر من هذا القبيل ومقالب ذلك كله في آن واحد هو أكثر ارتباطا كيف النوع من printf - حتى طريقة printf هو في الواقع ينفذ هو في الأساس ل التحدث الى نظام التشغيل لكتابة الاشياء التي إلى وحدة التحكم. لذلك لا تريد أن تفعل كل ذلك الاشياء على الفور عندما تقول printf بعض سلسلة لأن ذلك يمكن أن الحصول على تكاليف باهظة إذا كان لديه ل تفعل ذلك في كل مرة. لذلك إذا كنت تفعل printf مهلا، برنامجك قد لا تتم طباعة الواقع أن على الفور إلى وحدة التحكم. قد يقول، حسنا، لقد كتبت ذلك. ثم نوع من ننتظر منك أن تعطي انها أكثر من ذلك بقليل قبل الواقع الكتابة بها إلى وحدة التحكم. لذلك السبب في أن هذا هو الحال - وانها لا علاقة لها نوع من إلى النوم - هو أن النوم كان نوعا من مجرد حقن في هناك للتدليل على حقيقة أنه لا يكتب ذلك بشكل متزامن. ولكن السبب في ذلك هو فقط الأداء بحيث لم يكن لديك ل جعل هذا العديد من الاتصالات ل نظام التشغيل. ولكن هنا، ما نحن حقا نحاول القيام به مع هذا الشيء النوم هو عرض فقط أن عندما يكون لدينا اثنين من الاشخاص الذين يزورون هذا الموقع، فإنه لن يضع لهم في السطر حيث انها ستقول لدي لمساعدتك، وبعد ذلك عندما أنا الانتهاء تماما مساعدتك بعد هذه خمس ثوان، ثم أنا ذاهب ل الانتقال إلى الشخص التالي. تطلب ذلك الشخص الأول لا ربط هذا الحدث حلقة إذا كان هذا الأمر يبدو معقولا تماما. ولكن هنا هو في الواقع مثالا من شيء من شأنها أن التعادل حتى في حال حلقة. حتى هنا وظيفة الرهيبة ل حساب فيبوناتشي النونية. انها حرفيا الطريق أسوأ ما يمكن حساب عدد فيبوناتشي النونية. وهذا هو في الواقع مجرد الاعتراف حيث جاء هذا من، هناك في الواقع - أعني، يمكنك محاولة للذهاب العثور عليه - ولكن هناك مثل بلوق طويلة جدا إضافة أن شخصا ما كتب. انها مثل واحد من تلك الأشياء رديت. ولكن شخص ما انتقد Node.js، و استخدموا هذا كمثال. لذلك أنا نوع من يريد أن يظهر فقط لك اثنين وجهات نظر مختلفة لمجرد الحصول على فهم عام للمفاهيم وراء هذين الأمرين. ولكن هذا هو اختياره مجرد الرهيبة، حسابيا عدم كفاءة فظيعة طريقة مكثفة لحساب عدد فيبوناتشي النونية. وذلك فقط كملاحظة جانبية، لماذا انها رهيبة مثل في اتجاه واحد؟ نعم؟ الحضور: قل أن تبدأ خارجا مع 1،000. 1،000 انشقاقات في 999 و 998. كل من هذه تنقسم إلى أمرين. كل من هذه تنقسم إلى أمرين. كيفن شميد: الحق. الجمهور: على طول الطريق إلى أسفل. كيفن شميد: بالضبط. حتى مجرد تكرار للكاميرا، وإذا كنت استدعاء أكذوبة على مثل 1،000 أو شيء من هذا القبيل، فإنه من الواضح أن لا تقل عن أو يساوي واحد لذلك أنا ذاهب ل انتقل إلى هذه الحالة آخر، ثم سأقوم للاتصال أكذوبة 999 زائد 998 أكذوبة. ثم الى حد كبير كل ذلك العمل الذي يفعله هو أكذوبة 999 نوع من عند هذا المستوى. إذا ذهبت إلى أسفل، فإنه حتى أكثر زائدة من ذلك، ولكن إذا كنت فقط أعتقد الحوسبة أكذوبة 998 يحصل لنا جميلة قريبة من أكذوبة 999. لذلك يجب أن نكون حقا أكثر من ذلك بقليل ذكية حول كيفية نوع من إعادة استخدام هذه، ولكن نحن لا إعادة استخدام هذه الأمور على الإطلاق. لذلك يمكنك أن تتخيل هذا العملاق، شجرة عملاقة هذا مجرد الرهيبة. ولكن على أي حال، OK. لذلك كان أن أكذوبة. هو فقط يأخذ بعض الوقت لتشغيل. نعم؟ الحضور: [غير مسموع]. كيفن شميد: أوه، هل يمكن أن تكرار السؤال؟ الحضور: [غير مسموع]. كيفن شميد: يا لذلك هذا هو رمز فقط التي ستكون نوعا من على جانب الملقم. ولذلك فإن هذا لن يمكن العثور عليها في متصفح أو أي شيء. انها في الاساس ما لدينا هو أنه عندما المستخدم هنا يجعل حد كبير طلبها مرة أخرى، ونحن عندما نوع من تقديم طلب، ونحن في طريقنا للاتصال هذه الوظيفة على جانب الملقم. وبعد ذلك سوف تحصل على النتيجة مرة أخرى عن الدعوة التي وظيفة. ثم سنقوم بطباعة فقط إلى المستخدم. وبالتالي فإن المستخدم لا يتعامل حقا مع هذه الوظيفة أكثر من اللازم. كان هذا هو السؤال؟ فهل هذا يعقل؟ موافق. بارد. ذلك مرة أخرى، ونحن نفعل هذا كله res.writeHead الشيء حيث أننا طباعة الرأس. وبعد ذلك وضع حد للاستجابة عن طريق القيام الرقم السحري هو أكذوبة 45. لذلك دعونا فقط تشغيل هذا الخادم. لذلك أنا ذاهب الى القيام fib.js. عقدة وحتى الآن أكذوبة خادم بلدي يعمل. ثم هنا، وانا ذاهب لفعل واحد من هؤلاء. موافق؟ لذلك أنا فقط أريد أن أقول، الضفيرة. لذلك سيستغرق بعض الوقت ولكن نأمل قريبا سوف تنتهي و فإنه سيتم طباعة إلى أن 45 عدد فيبوناتشي. الحضور: [غير مسموع]. كيفن شميد: إنه ينبغي الحصول على القيام به في وقت قريب جدا. لذلك ينبغي أن تأخذ 5-6 ثواني. أنا لا أعرف هذا مجرد كونها V8 سوبر بسرعة، ولكن في أي حال، وهذا هو المثال قصيرة جدا وعمدا ائقة من غير تافهة الحساب. وذلك بعد فترة من الوقت، فإنه لا يحصل هذا. ولكن الآن، ماذا لو أفعل ذلك من نفس النوع التجربة كما كان من قبل حيث أقوم طلبين في نفس الوقت؟ حتى هنا أنا ذاهب إلى الضفيرة على هذا العنوان، وانا ذاهب للقيام الضفيرة آخر. وتذكر، وعندما فعلنا هذا ل النوم الخادم، عندما كان لدينا أساسا بعد خمس ثوان، وأنها جميلة كلا بكثير عاد الحق في نفس الوقت تقريبا. لذلك كان لا ربطه ولا سيما المباراة. ولكن دعونا نحاول الآن. موافق، حتى وصلنا لدينا عمليتين. أتذكر تلك هي معرفات العملية. هذا سيكون قليلا حرج بينما نحن المماطلة. لذلك دعونا مجرد البقاء هنا والانتظار. لذلك ينبغي أن يأتي واحد منهم مرة أخرى بعد مثل - موافق، لذلك جاء واحد مرة أخرى. ولكن بعد ذلك لماذا لم ثاني واحد يعود فقط حتى الآن؟ نعم؟ الحضور: الخادم لا تستطيع أن تفعل أي شيء في حين انها الحوسبة هذا العدد الكبير. كيفن شميد: الحق. لذلك كان الرد فقط أن الملقم حقا لا تستطيع أن تفعل أي شيء في حين انها الحوسبة أن عدد فيبوناتشي. حتى الآن أنا فقط حصلت على أمرين الظهر. ولكن أعتقد أن مجرد التفكير حول رمز أكثر من ذلك بقليل، وكيف انها تعمل وكل شيء. لذلك هذا هو وظيفة هنا التعليمات البرمجية التي لقد قلت هذا الخادم لتشغيل عندما يتلقى طلب واردة جديدة. حتى انها مجرد الذهاب لتشغيل من خلال هذا كود بأكمله، ثم انها سوف تذهب عودة إلى حلقة الحدث ثم تابع التحقق من وجود أحداث جديدة. وذلك أساسا ما قمنا يحدث هو الخادم هو الاستماع لأشياء جديدة. أول شخص يسأل عن ما هو 45. نحن تشغيل هذه التعليمات البرمجية لحساب ذلك. يأخذ هذا الرمز ما يقرب من خمسة إلى ست ثوان للتشغيل. ثم نعود إلى حلقة الحدث والتحقق من وجود طلبات جديدة. لذلك هذا هو مثال عن كيفية، إذا كنت لديك الأشياء التي هي ما يسمى حساب ملزمة، أو استخدام الكثير من الحسابية، ليس السلطة، ولكن مثل هي حسابيا مكثفة - أعتقد شيء واحد ليقول عن هذا أن هذه الوظيفة تقوم به تماما، بالنسبة للجزء الأكبر، جميلة مفيد حق العمل. طوال الوقت أن هذا الاستدعاء تم تشغيل وظيفة، كان جميلة إنفاق الكثير معظم وقته فقط الحوسبة الرقم الذي فيبوناتشي النونية. ولكن كان لدينا فقط موضوع واحد للتعامل معها. في نموذج أباتشي، عندما شخصين يقدم الطلب للحصول على أكذوبة 45، ونحن لكان اثنين من المواضيع المختلفة. ومن ثم العمل على نظام التشغيل كان يمكن أن يكون، أو مستوى المستخدم التعليمات البرمجية التي تدير المواضيع، سوف لقد كان لشريحة التي تصل على وحدة المعالجة المركزية، أو حتى إذا كان لديك وحدات المعالجة المركزية متعددة، توزيعها بالتساوي عبر وحدات المعالجة المركزية بحيث كانت كل من النهاية تقريبا في نفس الوقت. وذلك فقط لتبين لكم كيف يمكننا فرز من - وهذا ليس ما مجموعه الكمال الحل، ولكن نوع من الكيفية التي يمكن جعل أعود هنا والقيام أفضل قليلا. ذلك ما قلته هنا هو برنامج يسمى أكذوبة C. وهذا يستخدم في الأساس واحدة أخرى من وحدات عقدة دعا وحدة معالجة الطفل. حتى لقد تضمنت أنه في هذا النوع أعلى من مثل أود أن تفعل رطل تشمل process.h الطفل أو شيء من هذا. الآن لدي الوصول إلى هذا المتغير CP التي لديها كل ما عندي وظيفة. وحتى الآن ما أفعله في هذا الرد المعالج هو أنا تشغيل هذا البرنامج نقطة خفض فيبوناتشي 45. وذلك ما قمت به - وأنا ذاهب فقط للخروج من هذا البرنامج ل قليلا - ولقد كتبت برنامج C التي يحسب الأساس عدد فيبوناتشي النونية. لذلك ليس هنا فقط برنامج لقد كتبت في C أن يحسب هذا. أستطيع أن ترجمة عليه، واستطيع ان اركض ذلك في سطر الأوامر. وانها تسير لحساب 45 عدد فيبوناتشي. حتى إشعار فإنه يأخذ فقط الى حد كبير طالما. أنا ربما يمكن أن تستخدم اندفاعة إلى 03 تحسين ذلك أو شيء من هذا القبيل، لكنني فقط لم مثل العادية إعدادات مترجم. ويطبع بها. ولكن الآن، ما أنا من النوع تفعل؟ أوه آسف، الملف غير صحيح. ذلك أن أفعل نفس الشيء مع الاشياء رأس كما كان من قبل. ثم أفعل هذا cp.exec. فما هذا هو بصدد القيام به هو انها الذهاب لتشغيل هذا البرنامج. ولكن يعمل هذا الطريق هو أن انها لن تنتظر هذا البرنامج حتى النهاية. تقول فقط أساسا تنفيذ هذا البرنامج. لذلك اكتب هذا في الأساس إلى الأمر موجه من نوع. وبعد ذلك، عند الانتهاء من ذلك مع ذلك، تشغيل هذه الوظيفة. وحتى الآن نحن نوع من الحصول على هذا الشيء استعادة كامل وكأننا لا تنتظر. هل هذا النوع من معنى؟ نعم؟ الحضور: [غير مسموع]؟ كيفن شميد: ولذلك فإن هذا سوف الواقع فتح عملية جديدة للقيام بذلك. لذلك هذا هو الواقع، في بعض النواحي، الشر، وليس السوبر الشر، وإنما هو المهم أن أقول أن هذا هو نوع من العودة إلى، من جهة، واباتشي نموذج حيث نقوم المواضيع والعمليات لكل طلب أو العمليات لكل طلب. لذلك هذا هو نوع من مشابهة لماذا اباتشي. في بعض الحالات، فإنه سيتم فقط استخدام جديدة موضوع، والذي هو أكثر من ذلك بقليل ضوء الوزن من العملية، ولكن يمكن اباتشي في نهاية المطاف التفرع عملية جديدة وهو نوع من ما نقوم به هنا ضمنيا بالقيام نقطة مائلة فيبوناتشي 45. ثم في هذه الحالة، نحن نوع من تكبد نفس نفقات العمليات. لذلك هذا هو شيء واحد فقط يمكنك القيام به. ولكن فقط لاظهار هذا النوع من التشغيل. وهذا الكلام هو مجرد تهدف حقا في تقديم هذا النوع من البرامج باعتبارها طريقة لاظهار وجهات نظر مختلفة بشأن كيفية تصميم الخوادم من هذا القبيل. لذلك هذا قيد التشغيل، ومن ثم إذا كنت تفعل الآن هذا مرة أخرى، وأنا حصلت على اثنين معرفات عملية. دعونا فقط نتحدث عن الأشياء أن نشير إلى. حتى إشعار انهم تدريجيا. هذا هو بارد. لأنه كان 27122 قبل. ولكن إشعار الآن، عادوا في نفس الوقت تقريبا. والآن، سؤال جيد أن نسأل عن لماذا كان هذا هو الحال، وظيفته كان عليه الآن إلى نوع من جعل هذه الأشياء نوع من اللعب النظيف مع بعضها أخرى، فإن هذه مثيلين من نقطة مائلة فيبوناتشي 45 التي ركضت أو أن ركض عقدة؟ الذين نوع من يجعل من العدل أن كلا منهما الحصول على نوع من التوازن وقت التشغيل؟ الحضور: [غير مسموع]. كيفن شميد: نعم. ذلك أساسا، عندما أفعل نقطة مائلة أكذوبة 45 أو شيء من هذا القبيل، والآن حان النوع تصل إلى نظام التشغيل ل التعامل مع وقت تشغيل هذه البرامج. والآن يمكن أن الجدول الزمني لها على وحدات المعالجة المركزية أو أنها مختلفة يمكن أن الجدول الزمني لها. يمكن أن شريحة حتى الوقت الذي واحد وحدة المعالجة المركزية يحصل عليه أو أن تحصل لتشغيل وحدة المعالجة المركزية على واحد. ذلك أن الفكرة من وراء ذلك. فهل هذا يعقل أن الجميع؟ وحتى الآن عقدة ليست في الحقيقة لعب شارك في تقسيم هذه المهام. موافق. ذلك أن ما يقرب من ذلك للحصول على أمثلة. أردت فقط أن تظهر شيئا آخر لأن الكثير من هذه حتى الآن لا تماما السوبر العملية في بعض الحالات. يمكنني ان اتصور العودة الى الوطن بعد هذا الحديث وشيء وقوله مثل، كذلك النوع الأول من خرج من أن الحديث عن أن يمكنني جعل خادم فيبوناتشي لل قراري النهائي للمشروع. لذلك ليس هنا فقط واحدة نوع من مثال أكثر التي نأمل أن تكون - ربما لا، ولكن ربما - أكثر من ذلك بقليل ذات الصلة إلى نوع من المشاريع النهائية و التفكير في المستقبل لأشياء من هذا القبيل. لذلك هذا هو chat.js. لذلك هذا هو نوع من مثل بعض العينات خادم شفرة الجانب التي يمكن أن تستخدم ل إعداد ملقم دردشة صغيرة مثل كنت قد شهدت على دردشة الفيسبوك أو أيا كان. لذلك أنا لا أقول هذا هو مثل الفيسبوك الدردشة، ولكن هذا النوع من مثل جيد - ربما ليست جيدة، ولكن ربما نقطة الانطلاق لمحادثة - جيد الخادم لموقع الويب الخاص بك لمشروع النهائي. لذلك دعونا ننظر إلى ما تقوم به. لذلك نحن نحصل على هذا الشيء خاصة في الجزء العلوي، وهذا فار SIO يساوي تتطلب Socket.IO. لذلك هذا هو آخر شيء أنه لا تأتي في الواقع واحدة مع عقدة ولكن يمكنك تثبيته. انها وحدة عقدة. حتى انها مجرد مثل بعض تمديد عقدة. SocketIO هو في الواقع حقا نوع من باردة. انها فكرة مجردة التي أساسا ما ما يفعله هو هو أنه يسمح لك ل يكون هذا الدفق من الاتصالات بين شبكة الإنترنت متصفح وخادم الويب. حتى بالنسبة للجزء الأكبر حتى الآن، لقد كان لدينا هذه ثانية واحدة سريعة جدا أو اثنين الاتصالات الثانية بين شبكة الإنترنت متصفح وخادم الويب. حتى انها تذهب أساسا إلى google.com، الحصول على الاشياء، إرساله مرة أخرى، ومن ثم ننتهي. نحن نتحدث أبدا مرة أخرى حتى أنواع المستخدم في شيء آخر. ولكن ما Socket.IO ونوع مماثل من الأشياء - وSocketIO هو في الواقع واحدة من الأشياء التي بنيت على النحو WebSocket الذي هو نوع من متاح كجزء من HTML5 - التي تسمح لك أن يكون هذا استمرار الحوار. وهذا مفيد جدا في خدمة الدردشة النوع من الشيء لأنه وكأنه نوع من الحوار المستمر في بعض الطرق لأنه إذا كنت الدردشة مع شخص ما، يمكنك الآن مجرد ارسال رسالة إلى أسفل الأنبوب، ثم الخادم يمكن إرسال رسالة إلى أسفل الأنابيب إلى شخص آخر كنت الدردشة مع. ثم هل يمكن أن يكون هذا تبادل من هذا القبيل. ولهذا النوع من ما SocketIO هو جيد ل. السبب في أن يستخدم SocketIO WebSockets كما شيئا واحدا هو أنه في بالإضافة إلى WebSockets مجرد سهل القديمة، كما يفعل بعض الحيل لفي الأساس جعله متوافق مع المستعرض. لذلك متصفحات مثل إنترنت إكسبلورر للأسف لا تدعم WebSockets الحق في الخروج من مربع. لذلك يستخدم نوع آخر من أنيق بارد الأشياء مع أدوبي فلاش للسماح أن يكون لديك الدعم عبر متصفح. بحيث يكون مفيدا حقا. وفعلا، وأنا أعلم أنا نوع من يعمل على الوقت هنا، ولكن CS50 مناقشة، وقد سبق لك أن رأيت شيئا مثل، أنا لا أعرف، لم تحدد فلان وفلان هو الرد على هذا المنصب أو شيء من هذا القبيل، هذه الميزة؟ هذا SocketIO. وذلك عندما يبدأ شخص ما في كتابة مربع بحث للرد أو شيء ما، لا ما هو المتصفح ودعا في SocketIO تنبعث نوعا من الحدث الذي يقول شخص ما هذا الرد على هذا المنصب. ثم يقول الخادم، موافق، ماذا علي أن أفعل؟ حسنا الآن يجب أن أقول هؤلاء الرجال أخرى الذين هم على CS50 ناقش أبحث في هذا المنصب أن شخصا ما هو الرد. ولهذا النوع من ما هو SocketIO جيدة ل، وهذا النوع من استمرار تيار من الحوار. موافق. وذلك ما لدي هنا - ونحن فقط الذهاب الى تجاهل مجموعة الاتصالات لقليلا - ما أقوم به هو أنني لا يستمع أخرى. ذلك أن مجرد وسيلة في Socket.IO و قائلا دعونا الاستماع على هذا المنفذ. ثم أفعل هذا على الاتصال. ذلك أن مجرد أساسا المقبس IO ل طريقة للقول، عندما نتلقى الصدد، أريدك لتشغيل هذه التعليمات البرمجية. وتلاحظ أنه بدلا من وجود تفصيل والدقة في تمرير هناك لدي المقبس. وهذه الفكرة هي في الأساس هذا المقبس الشيء الذي يمكنك كتابة وقراءة من الذي لديه المستخدم رسائل ربما. والرسائل التي سترسل يمكن أن تذهب من خلال هذا المقبس. فهل هذا يعقل؟ لذلك فمن هذا الشيء مستمر. فما أقوم به هو أنني استدعاء Socket.emit. وتنبعث منها يأخذ جميلة الكثير حجتين. الوسيطة الأولى هي سلسلة فقط يمثل نوع من شيء كنت ينبعث منها. لذلك لهذه الحالة، لقد استخدام هذه الرسالة الجديدة سلسلة. وهذا مجرد قائلا أساسا أن نوع هذا الشيء، ما أنا إرسال، هو رسالة جديدة. حتى تتمكن من الاستماع لأنواع معينة مثل رسالة جديدة أو أيا كان باستخدام نقطة على. ذلك الاتصال والمستخدم أرسلت إلى هناك، إذا نظرتم حيث نسميه نقطة على، تلك هي سلاسل الأخرى التي تمثل أنواع الرسائل المستخدم. حتى أنها في الأساس يمكن أن يكون هذا إبعث أحد أنواع هذه الرسالة، و ثم تفعل شيئا ردا على أحد أنواع هذه الرسالة لذلك أنا انبعاث هذه الرسالة الجديدة. ونحن في طريقنا لتجاهل connections.push لثانية واحدة. ولكن بعد ذلك أنا أقول، أرسلت Socket.on المستخدم. حتى الآن انها ترغب في ذلك النوع من عند المستخدم يرسل لي رسالة، أريد لك لتشغيل هذه التعليمات البرمجية. وتلاحظ أن تلك الوظيفة المجهول تتخذ في هذا المتغير دعا البيانات التي يجري أساسا لديك رسالة للمستخدم. ذلك النوع الآن دعونا من الحديث عن مجموعة الاتصالات. لذلك تم تصميم هذا لعميل دردشة حيث الأساس نوع من الجميع في غرفة الدردشة نفسها. ذلك أساسا، ما نحن بحاجة للحفاظ على حول بعض صفيف الأساس يمثل كل الشعب في الدردشة بعض الطرق، إذا كان هذا الأمر يبدو معقولا تماما. أليس كذلك؟ لأننا بحاجة إلى معرفة من هم هؤلاء الرجال وحتى يمكننا أن نرسل لهم رسائل أن الآخرين ترسل لنا. وذلك ما يفعله هو هذا الرمز عندما المستخدم يرسل رسالة - هذا نوع من الحدث - ونحن في طريقنا لتشغيل هذه التعليمات البرمجية. وما نقوم به هو تشغيل من خلال هذا مجموعة التي طالبنا الاتصالات. والى حد كبير عن كل اتصال ما عدا واحدة هذا هو بلدنا، وهذا ما يقوله هذا الرمز، نرسل جديدة رسالة مع أن الرسالة المرفقة المعلومات. لذلك إذا لاحظت هنا، ماذا فعلت عندما المستخدم فعليا يجعل جديدة الاتصال هو واضاف لقد مع طريقة JavaScript.push، وهذا هو في الأساس مجرد القول مثل إضافة أن المقبس كقيمة في لدينا مجموعة اتصالات. وحتى الآن عند تشغيل هذا الرمز، وسوف إرسال الأشياء إلى تلك الخاصة الاتصالات. ولذلك فإن هذا يمكن أن يكون نقطة انطلاق جيدة لجعل خدمة الدردشة أو شيئا من هذا القبيل. وهذا النوع من الشيء هو أن تبرد و التعليمات البرمجية التي تشاهد هنا للمثل على و تنبعث منها وأشياء من هذا القبيل هو نفسه نوع من شفرة جافا سكريبت أن تفعل الكتابة في المتصفح للتفاعل مع الخادم. ولهذا السبب SocketIO هو نوع من أنيق ومفيدة في هذا الطريق. يا وأكثر شيء واحد فقط سريع الحقيقي. كان هناك مشروع CS50 النهائي العام الماضي التي تنفذ أساسا دردشة الخادم في Node.js. اعتقد انها Harvardchats.org ولكن أنا لا - موافق. لست متأكدا ما هو URL، ولكن ويمكنني أن أرسل أنه من بعد ذلك. لكنه نوع من تبريد ما يمكنك القيام به مع Node.js. لذلك آمل، بصفة عامة، يا رفاق لديها شعور جيد من ما هو مفيد Node.js لوكيف يمكن أن تنطبق ربما إلى المشروع النهائي الخاص بك. وسوف يتم ارسال بعض أكثر الموارد مع هذا. وأشكركم على حضوركم. شكرا لك. [تصفيق]