1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Hallo zusammen. 3 00:00:09,710 --> 00:00:12,640 Willkommen in der CS50-Seminar auf Node.js. 4 00:00:12,640 --> 00:00:13,955 Mein Name ist Kevin. 5 00:00:13,955 --> 00:00:15,580 Ich bin ein CS50 TF. 6 00:00:15,580 --> 00:00:17,650 Und ich bin ein bisschen wie wirklich aufgeregt, zu diesem Seminar. 7 00:00:17,650 --> 00:00:20,430 Ich denke, Node.js ist sehr cool. 8 00:00:20,430 --> 00:00:24,200 Ich hoffe, dass dieses Seminar kann verwendet werden, als gut, ich denke, Sprungbrett für 9 00:00:24,200 --> 00:00:26,380 einige Ihrer letzten Projekte, wenn Sie sind daran interessiert, mit 10 00:00:26,380 --> 00:00:27,630 so etwas wie Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Wir werden eine Art beginnen das Seminar durch nur um ein wenig von der 13 00:00:33,320 --> 00:00:36,970 Art der Hintergrund Skalierbarkeit Perspektiven von Node.js und dann 14 00:00:36,970 --> 00:00:39,240 wir werden auf einige Code-Beispiele zu bewegen. 15 00:00:39,240 --> 00:00:42,340 Und ich werde den Code auf einer Webseite haben, und man kann sich den Code anschauen. 16 00:00:42,340 --> 00:00:45,475 Und nach dem Seminar, werde ich der Diskussion sortieren darüber, wie Sie einrichten können Node.js 17 00:00:45,475 --> 00:00:48,220 auf Ihrem Computer. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Also lasst uns loslegen. 20 00:00:49,760 --> 00:00:53,700 Also ich denke, ich will nur reden Web-Server, wirklich, zuerst. 21 00:00:53,700 --> 00:00:59,730 Und um diese Diskussion zu beginnen, ich grundsätzlich ein Diagramm ist, das aus 22 00:00:59,730 --> 00:01:04,269 das Lehrbuch für CS61 verwendet, die zeigt im Grunde die Interaktion 23 00:01:04,269 --> 00:01:08,510 zwischen einem Client-Prozess, wie Ihre Web- Browser oder wie Ihr Ziel Client oder 24 00:01:08,510 --> 00:01:11,340 so etwas, und einen Web-Server. 25 00:01:11,340 --> 00:01:15,150 Also diese Art der sieht ähnlich aus wie die Bild, das Sie in der Vorlesung auf sah 26 00:01:15,150 --> 00:01:19,270 Mittwoch, wo im Grunde haben wir einige Client-Prozess wie Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> Und dann ist der erste Schritt der Client sendet eine Anfrage. 28 00:01:22,980 --> 00:01:27,510 Damit so etwas wie gut wir sein zu besuchen, weiß ich nicht, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Also haben wir diesen Antrag zu erteilen. 30 00:01:29,320 --> 00:01:34,280 Und hat jemand an den Namen erinnern das Protokoll, wie das angibt 31 00:01:34,280 --> 00:01:35,610 Anfrage strukturiert sein sollte? 32 00:01:35,610 --> 00:01:36,382 Yep. 33 00:01:36,382 --> 00:01:37,650 >> ZIELGRUPPE: [unverständlich]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Genau. 35 00:01:38,150 --> 00:01:40,100 So ist es wie HTTP, oder? 36 00:01:40,100 --> 00:01:44,720 Also im Grunde, wie die Spezifikation für diesem Antrag sollte eigentlich verlegt werden 37 00:01:44,720 --> 00:01:47,450 aus, weil am Ende des Tages, Dieser Antrag ist wirklich nur wie ein 38 00:01:47,450 --> 00:01:50,240 Zeichenfolge, die im Grunde sagt, ich möchte dies. 39 00:01:50,240 --> 00:01:53,580 Und die Spezifikation dafür ist HTTP. 40 00:01:53,580 --> 00:01:55,270 Also das ist wie ein Protokoll. 41 00:01:55,270 --> 00:01:57,920 >> Also der Server dass Anfrage. 42 00:01:57,920 --> 00:02:01,610 So können Sie Jungs haben ein Web-Server installiert in der CS50-Appliance. 43 00:02:01,610 --> 00:02:02,460 Es ist Apache. 44 00:02:02,460 --> 00:02:06,230 Und diese Woche, wenn Sie Problem zu umgehen stellte sieben, werden Sie tatsächlich arbeiten 45 00:02:06,230 --> 00:02:08,160 mit dem Web-Server. 46 00:02:08,160 --> 00:02:12,380 So empfängt der Server diesen Antrag, und dann muss es seine Art kratzen 47 00:02:12,380 --> 00:02:15,090 Kopf und sagen wie gut, was kann ich damit zu tun? 48 00:02:15,090 --> 00:02:20,060 >> Also auf das, was sie beschließt, zu tun, dann auf der Basis es haben kann, eine Art kontaktieren 49 00:02:20,060 --> 00:02:20,730 der Ressource. 50 00:02:20,730 --> 00:02:23,700 Und das könnte eine Ressource viele verschiedene Dinge. 51 00:02:23,700 --> 00:02:26,810 Für einen, es könnte nur wie eine statische HTML-Datei. 52 00:02:26,810 --> 00:02:29,820 Es könnte also sein, wie einige HTML, die wie für ist 53 00:02:29,820 --> 00:02:31,100 Ihre persönliche Website. 54 00:02:31,100 --> 00:02:35,360 Es könnte eine statische Datei wie ein Bild sein oder wie ein Film, den Sie haben. 55 00:02:35,360 --> 00:02:37,660 Es könnte sogar müssen reden zu einer Art von Datenbank 56 00:02:37,660 --> 00:02:39,530 wie eine MySQL-Datenbank. 57 00:02:39,530 --> 00:02:43,910 So ist es nicht immer, zu kommunizieren mit einer Ressource, sondern in 58 00:02:43,910 --> 00:02:45,700 In einigen Fällen könnte es. 59 00:02:45,700 --> 00:02:47,800 >> Also dann, was es tun wird danach ist, es wird 60 00:02:47,800 --> 00:02:49,430 schicken Sie die Antwort. 61 00:02:49,430 --> 00:02:53,130 Und die Antwort dafür ist, auch von HTTP angegeben. 62 00:02:53,130 --> 00:02:54,830 So kann der Client zu empfangen. 63 00:02:54,830 --> 00:02:56,740 Es kann es zu zerreißen und verarbeiten. 64 00:02:56,740 --> 00:03:00,900 Und dann eine Web-Seite erhalten Sie wie Google oder CS50.net oder 65 00:03:00,900 --> 00:03:02,240 was auch immer Sie zu ging. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Das ist also die grundlegende Interaktion, die wir gehen mit zu tun. 68 00:03:06,080 --> 00:03:08,770 Und wir sind ziemlich viel los zu sein Schwerpunkt auf diesem Teil der 69 00:03:08,770 --> 00:03:10,640 Interaktion, der Server. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Kühl. 72 00:03:12,210 --> 00:03:15,500 Wer Fragen haben so weit? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Also wie gesagt, erhält der Web-Server Diese HTTP-Anfrage und gibt dann diese 75 00:03:22,430 --> 00:03:24,760 HTTP-Antwort. 76 00:03:24,760 --> 00:03:29,100 Und wie wir darüber gesprochen, bevor die CS50 Gerät Webserver Apache. 77 00:03:29,100 --> 00:03:32,490 Also, wenn Sie arbeiten Jungs auf P gesetzt sieben, Sie gehen, um mit der zu arbeiten sind 78 00:03:32,490 --> 00:03:34,120 Apache Web-Server. 79 00:03:34,120 --> 00:03:37,890 Sie müssen nie wirklich funktioniert direkt mit Apache zu viel. 80 00:03:37,890 --> 00:03:41,920 Sie konfigurieren Art von Apache ein wenig wenn Sie die virtuellen Hosts oder geben 81 00:03:41,920 --> 00:03:44,970 v die Gastgeber, und wir bekommen dass in einem wenig. 82 00:03:44,970 --> 00:03:50,620 >> Aber im Grunde, der Apache-Webserver eingerichtet, um mit PHP arbeiten Art 83 00:03:50,620 --> 00:03:51,730 der aus der Box. 84 00:03:51,730 --> 00:03:56,170 Also, was wirklich passiert ist, wenn du gehst zu einem Ihrer Websites wie, sagen wir, 85 00:03:56,170 --> 00:04:00,360 lokalen Host Strich index.php oder so etwas, Ihr Browser sendet, dass 86 00:04:00,360 --> 00:04:04,330 Anfrage und dann Apache sitzt dort und findet heraus, um mit ihm zu tun. 87 00:04:04,330 --> 00:04:08,840 Und die Aktion ausführen , dass Code in index.php und 88 00:04:08,840 --> 00:04:11,330 dann schicken Sie es ab zurück. 89 00:04:11,330 --> 00:04:15,640 Es gibt also, dass. 90 00:04:15,640 --> 00:04:16,980 So Art sprachen wir darüber. 91 00:04:16,980 --> 00:04:21,990 So ist es nur eine statische Datei dienen könnte oder Ausgabe laufen einige PHP-Code und dann 92 00:04:21,990 --> 00:04:23,510 ist die Reaktion. 93 00:04:23,510 --> 00:04:27,670 >> So dann eine häufig gestellte Frage, die kommen können Sie ist gut, wie wir wirklich tun 94 00:04:27,670 --> 00:04:31,750 mit mit mehreren Benutzern zur gleichen Zeit? 95 00:04:31,750 --> 00:04:36,930 So vorstellen, ob Sie einen Web-Schreiben Server, wenn Sie einen Web-Server hatte, dass 96 00:04:36,930 --> 00:04:39,900 Sie versuchen, in etwas zu schreiben wie C oder so etwas, 97 00:04:39,900 --> 00:04:45,150 im Grunde kann man darüber nachdenken, wie es könnte eine Art Code sein, dass 98 00:04:45,150 --> 00:04:49,330 würde die Anfrage erhalten, aber dann es muss all diese Arbeit auf es zu tun. 99 00:04:49,330 --> 00:04:53,060 Es kann zu haben, zum Beispiel, wenden die Datenbank oder so ähnlich. 100 00:04:53,060 --> 00:04:53,300 Right? 101 00:04:53,300 --> 00:04:56,010 Und dann wäre es diese Art tun der Verarbeitung und dann 102 00:04:56,010 --> 00:04:57,060 die Antwort zurück gesendet. 103 00:04:57,060 --> 00:04:58,950 Also das ist, wie die hohe Level-Übersicht. 104 00:04:58,950 --> 00:05:04,210 >> Aber es ist nicht sofort klar, wie Sie tun können, so dass zwei Personen oder 105 00:05:04,210 --> 00:05:09,040 sogar 1.000 Menschen konnten mit der Arbeit Ihrer Web-Server zur gleichen Zeit. 106 00:05:09,040 --> 00:05:14,880 So ist die Lösung, die von Apache wird Threads oder Prozesse genannt. 107 00:05:14,880 --> 00:05:16,770 So können Sie gehört haben, diese Begriffe vor. 108 00:05:16,770 --> 00:05:22,190 Es ist OK, wenn Sie nicht haben, aber denken Sie nur über Threads oder Prozesse als Wege für 109 00:05:22,190 --> 00:05:26,290 ein Betriebssystem oder ein Anwendungsprogramm oder so etwas wie das, oder ein Web-Server 110 00:05:26,290 --> 00:05:28,810 zu Art ausführen mehrere Dinge auf einmal. 111 00:05:28,810 --> 00:05:31,760 So können Sie den Begriff gehört haben, wie Fäden der Ausführung. 112 00:05:31,760 --> 00:05:34,140 Also ist es eine Art, wie du bist Art von Multitasking. 113 00:05:34,140 --> 00:05:37,710 >> Und wenn Sie auf das Feld der gesehen habe Ihre Laptop oder so etwas, 114 00:05:37,710 --> 00:05:43,040 Multicore, was Sie tun können ist, können Sie laufen zwei verschiedene Threads auf verschiedenen 115 00:05:43,040 --> 00:05:46,700 Teilen der CPU, so dass sie tatsächlich zur gleichen Zeit passieren. 116 00:05:46,700 --> 00:05:48,100 Also das ist wirklich mächtig. 117 00:05:48,100 --> 00:05:52,270 Und dies ist eine Art von Apache Lösung für dieses Problem. 118 00:05:52,270 --> 00:05:57,900 >> So gibt es eine Art, wie alle Probleme mit diesem Ansatz aber? 119 00:05:57,900 --> 00:05:59,870 Also ich denke, ich Art schrieb sie dort. 120 00:05:59,870 --> 00:06:03,440 Aber beide Art von verwenden eine Menge Speicher. 121 00:06:03,440 --> 00:06:07,490 Es ist sehr teuer zu erstellen ein Faden oder ein Prozess. 122 00:06:07,490 --> 00:06:11,750 >> Und ein Teil der Argumentation ist, dass nur wie wenn Sie mit einer C-Programm sind 123 00:06:11,750 --> 00:06:15,090 wie Ihr Haupt-und dann, dass Anrufe Eine weitere Funktion hat, daß 124 00:06:15,090 --> 00:06:16,520 eine Art von Stack. 125 00:06:16,520 --> 00:06:19,910 So auch Themen erfordern eine völlig separaten Stapel die 126 00:06:19,910 --> 00:06:21,220 kann ziemlich groß sein. 127 00:06:21,220 --> 00:06:25,170 Und wenn Sie sich vorstellen können, die Tonnen Benutzer auf Ihrer Website, Sie müssten 128 00:06:25,170 --> 00:06:26,280 eine Menge von verschiedenen Threads. 129 00:06:26,280 --> 00:06:28,230 Das ist eine Menge von Stacks zu zu verwalten und zu pflegen. 130 00:06:28,230 --> 00:06:31,280 Es ist also große Speicherverbrauch. 131 00:06:31,280 --> 00:06:35,650 >> Und dann auch, sagen wir, Sie haben nur eine CPU, oder sagen wir, Sie haben 132 00:06:35,650 --> 00:06:38,460 mehr Threads als Sie haben diese Multicores. 133 00:06:38,460 --> 00:06:38,730 Right? 134 00:06:38,730 --> 00:06:43,280 Also sagen wir, Sie hatten 10 Threads und Sie hatten nur fünf CPUs. 135 00:06:43,280 --> 00:06:46,260 Sie Art haben, dies zu tun, wo Sie wechseln zwischen dem aktuellen 136 00:06:46,260 --> 00:06:49,090 eine, weil Sie läuft ist können nicht alle 10 auf einmal laufen. 137 00:06:49,090 --> 00:06:50,980 Und das nennt sich ein Kontextwechsel. 138 00:06:50,980 --> 00:06:54,260 Und dieser Begriff hat tatsächlich ein paar verschiedenen Kontexten, aber lasst uns einfach 139 00:06:54,260 --> 00:06:56,620 halten sie als Schalt zwischen zwei Threads. 140 00:06:56,620 --> 00:06:59,730 Das kann ziemlich teuer sein, weil im Grunde, was Sie tun müssen, ist, dass Sie 141 00:06:59,730 --> 00:07:03,340 zu stoppen, was du tust, speichern Sie die Zustand dieser laufenden Thread, und 142 00:07:03,340 --> 00:07:05,440 dann woanders wechseln. 143 00:07:05,440 --> 00:07:09,420 >> So hat jeder irgendwie sehen die Motivation, warum Fäden und 144 00:07:09,420 --> 00:07:12,030 Prozesse vielleicht ein wenig sperrig sein? 145 00:07:12,030 --> 00:07:13,840 Und haben Sie eine Frage? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Kühl. 148 00:07:15,070 --> 00:07:18,090 Wer irgendwelche Fragen? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Also, wenn wir einen Schritt zurück für eine zweite, es ist ein bisschen wie ein 151 00:07:26,720 --> 00:07:30,350 Beobachtung, dass wir über zu machen eine Menge von Web-Anwendungen. 152 00:07:30,350 --> 00:07:34,810 Und das ist wirklich, dass viele von ihnen tatsächlich tun das nicht viele nützliche 153 00:07:34,810 --> 00:07:37,140 arbeiten innerhalb eines Threads. 154 00:07:37,140 --> 00:07:41,170 So hat jemand begann am P gesetzt sieben überhaupt? 155 00:07:41,170 --> 00:07:45,650 So wollen Sie vielleicht beschreiben wollen einige der Teile? 156 00:07:45,650 --> 00:07:47,850 Haben Sie bei der Anmeldung gearbeitet oder so etwas? 157 00:07:47,850 --> 00:07:49,330 >> ZIELGRUPPE: Nein 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Das macht nichts. 160 00:07:50,150 --> 00:07:50,900 Entschuldigung. 161 00:07:50,900 --> 00:07:55,790 Aber im Grunde, in der P-Reihe, sind Sie sein werden, machen eine Menge Art 162 00:07:55,790 --> 00:07:59,760 Abfragen an eine Datenbank, einige bekommen Informationen aus dieser Datenbank. 163 00:07:59,760 --> 00:08:03,330 Und was der Code tun werden, was das Apache-Prozess oder 164 00:08:03,330 --> 00:08:06,030 dass Apache Thread tun werden während es zu Kontakt mit dem 165 00:08:06,030 --> 00:08:08,990 Datenbank ist es eine Art sein wird da sitzen und es wird sein 166 00:08:08,990 --> 00:08:12,130 warten auf die Datenbank zu antworten. 167 00:08:12,130 --> 00:08:16,290 >> Nun, da dieser nicht wie groß ein klingen mag beschäftigen, da die Datenbank auf Ihrem 168 00:08:16,290 --> 00:08:18,240 CS50 Gerät, oder? 169 00:08:18,240 --> 00:08:22,930 Aber es ist eine Art von Netzwerk Latenz, denn jetzt gibt es die Web- 170 00:08:22,930 --> 00:08:26,830 Server auf seinen eigenen Antrag zur Ausgabe die Datenbank die Kommunikation mit dem 171 00:08:26,830 --> 00:08:29,520 Datenbank und dann bekommen, dass Informationen zurück. 172 00:08:29,520 --> 00:08:33,190 So, jetzt ist es wie auch auf mich warten, ich bin gehen zu holen etwas aus der 173 00:08:33,190 --> 00:08:35,770 Datenbank und dann gibt es eine Viele warten los. 174 00:08:35,770 --> 00:08:36,870 Heißt das Sinn? 175 00:08:36,870 --> 00:08:38,580 >> Und für manche Dinge ist es nicht so schlimm. 176 00:08:38,580 --> 00:08:41,950 Wenn es nur um zum Beispiel Access Memory, das ist nicht wie 177 00:08:41,950 --> 00:08:44,100 schreckliche I / O-Latenz. 178 00:08:44,100 --> 00:08:47,110 Und wenn ich sage, was ich I / O-Latenz beziehe, ist wie jede Art von wie 179 00:08:47,110 --> 00:08:48,290 Eingabe-Ausgabe. 180 00:08:48,290 --> 00:08:52,950 Aber für den Zugriff auf eine Datei auf der Festplatte, wie wenn ich die statische HTML dienen wollte 181 00:08:52,950 --> 00:08:57,850 -Datei, die auf meiner Web-Seite oder so etwas, ich Art müssen 182 00:08:57,850 --> 00:09:02,310 Stopp für ein bisschen, lesen Sie die Datei in der von der Platte, und dann in 183 00:09:02,310 --> 00:09:04,400 dass die Prozess ich warte. 184 00:09:04,400 --> 00:09:06,700 Ich sage nicht, wertvolle Arbeit. 185 00:09:06,700 --> 00:09:11,270 >> Dies gilt jedoch nicht alles, aber es ist häufig in Anwendungen wie P-Set 186 00:09:11,270 --> 00:09:13,960 sieben und eine Vielzahl von Anwendungen dass Sie nicht 187 00:09:13,960 --> 00:09:15,440 tatsächlich tun, viel zu denken. 188 00:09:15,440 --> 00:09:19,090 Und wenn ich sage, denken, ich meine, wie Rechenarbeit. 189 00:09:19,090 --> 00:09:23,270 So Rechenarbeit könnte etwas sein wie, sagen wir, wollten Sie 190 00:09:23,270 --> 00:09:26,590 einen Web-Server, die nur berechnet die n-te Fibonacci-Zahl. 191 00:09:26,590 --> 00:09:29,300 Das klingt nicht besonders klingen Spaß Web-Server. 192 00:09:29,300 --> 00:09:34,220 Wie würde ich nicht erwarten, dass vor Ort zu sein der nächste Facebook, aber das ist etwas 193 00:09:34,220 --> 00:09:35,610 Art von Rechenarbeit. 194 00:09:35,610 --> 00:09:39,570 >> Und Sie können sich vorstellen, dass Austausch mit eine andere Art von interessanten 195 00:09:39,570 --> 00:09:43,070 Rechenarbeit. 196 00:09:43,070 --> 00:09:46,050 Angenommen, Sie waren etwas zu schreiben, dass die berechneten Grade der 197 00:09:46,050 --> 00:09:49,170 Abstand zwischen zwei Personen oder so ähnlich. 198 00:09:49,170 --> 00:09:51,860 Damit erfordert etwas Art der Berechnung, oder? 199 00:09:51,860 --> 00:09:56,630 Und auch dann zu tun, dass Sie immer noch eine Menge Warte für vielleicht tun 200 00:09:56,630 --> 00:09:59,550 Sie haben, um eine Datenbank zu schauen abfragen up wer Freunde mit, wer oder 201 00:09:59,550 --> 00:10:00,600 so ähnlich. 202 00:10:00,600 --> 00:10:03,510 So gibt es diese Art von Vorstellung der Rechenarbeit. 203 00:10:03,510 --> 00:10:05,260 Heißt das Sinn? 204 00:10:05,260 --> 00:10:08,258 Hat jemand Fragen? 205 00:10:08,258 --> 00:10:11,960 >> Oh, und ich denke, ich habe es Chatserver weil Chat-Server sind so eine Art 206 00:10:11,960 --> 00:10:13,240 ein weiteres gutes Beispiel dafür. 207 00:10:13,240 --> 00:10:15,250 Ein Chat-Server nicht über zu viel Denken zu tun. 208 00:10:15,250 --> 00:10:18,350 Es muss nur für die Menschen warten, um Nachrichten senden und dann, wenn 209 00:10:18,350 --> 00:10:19,800 sie haben, schicken Sie sie. 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> Also einfach wieder rekapitulieren, Apache und ähnliche Web-Server wie die Gabel ein 213 00:10:28,180 --> 00:10:31,470 Menge Threads und Prozesse, die können Art verschwenderisch sein. 214 00:10:31,470 --> 00:10:37,530 Also ich denke, die Frage, die kommen können, aus, dass ist müssen wir haben 215 00:10:37,530 --> 00:10:39,610 mehrere Threads und Prozesse? 216 00:10:39,610 --> 00:10:41,890 Was ist, wenn wir nur eine? 217 00:10:41,890 --> 00:10:45,710 >> Lassen Sie uns also ein Bild Art zu malen was diese aussehen würde. 218 00:10:45,710 --> 00:10:47,810 So verwenden wir nur ein Thread. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Also einfach vorstellen, das mit einem Thread. 221 00:10:52,790 --> 00:10:56,600 >> Nehmen wir an, wir waren nicht wirklich tun dass viele nützliche - und wenn ich sage 222 00:10:56,600 --> 00:10:59,450 nützlich, ich meine Rechenarbeit - 223 00:10:59,450 --> 00:11:01,130 in diesen mehrere Threads vor. 224 00:11:01,130 --> 00:11:04,180 Lassen Sie uns also Art von Konsolidierung alles in einem Thread. 225 00:11:04,180 --> 00:11:07,780 So was, wenn wir einen Thread, dass Art der geht nur um in der Schleife und 226 00:11:07,780 --> 00:11:10,880 Kontrollen ständig etwas tat neue passieren. 227 00:11:10,880 --> 00:11:15,130 So zum Beispiel, etwas Neues passiert könnte bedeuten, Ich habe etwas zurück von 228 00:11:15,130 --> 00:11:19,310 die Datenbank, oder jemand geschickt mir eine neue HTTP-Anfrage. 229 00:11:19,310 --> 00:11:22,290 Das sind also die Art von Veranstaltungen das passieren, oder? 230 00:11:22,290 --> 00:11:26,130 >> Und dann, was ich tun kann, wenn diejenigen, die neu Dinge passieren, ist in diesem selben Thread 231 00:11:26,130 --> 00:11:30,120 der Ausführung, diese einzelne Faden Ausführung, kann ich einige Code-Aufruf, 232 00:11:30,120 --> 00:11:32,410 würde, dass bestimmte Sache zu behandeln. 233 00:11:32,410 --> 00:11:36,640 So zum Beispiel, wenn ich etwas zurückgeben aus der Datenbank, laufe ich konnte meine 234 00:11:36,640 --> 00:11:40,960 kleine Rechen Teil von ihr, dass bereitet eigentlich nur die Sache 235 00:11:40,960 --> 00:11:42,620 Nachricht an den Benutzer zurück. 236 00:11:42,620 --> 00:11:46,710 So funktioniert diese Art von Sinn? 237 00:11:46,710 --> 00:11:49,940 >> Aber was sind wirklich die Folgen davon? 238 00:11:49,940 --> 00:11:50,660 Right? 239 00:11:50,660 --> 00:11:53,730 Weil wir geschrieben haben eine Menge Code, dass - 240 00:11:53,730 --> 00:11:58,330 und ich werde einfach weiter springen in den Folien, wenn das ist OK. 241 00:11:58,330 --> 00:12:00,930 Also, wenn Sie nichts dagegen haben, ich bin nur gehen, um einen Schritt zurück machen. 242 00:12:00,930 --> 00:12:03,410 Also diese Art der Sache ist als Ereignis-Schleife. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 Und es ist eine Art der Grund Idee hinter Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Also, was Node.js wirklich tut als Web- Server gibt es einen einzigen Thread 246 00:12:11,240 --> 00:12:14,850 Das ist im Grunde geht um in einer Schleife wie ein, während eine Art von unter 247 00:12:14,850 --> 00:12:18,510 die Haube von Node.js ist, die sich ständig Kontrolle, wir haben neue Dinge zu erhalten? 248 00:12:18,510 --> 00:12:22,720 Und dann wird es laufen Handler dass Sie einrichten. 249 00:12:22,720 --> 00:12:26,720 Aber eine gute Frage ist, wie können wir damit dies geschieht 250 00:12:26,720 --> 00:12:28,090 mit bestehenden Dinge? 251 00:12:28,090 --> 00:12:32,440 >> Also habe ich eine Reihe von C-Code, dass hier im Grunde sieht aus wie es die Eröffnung eines 252 00:12:32,440 --> 00:12:33,060 Datei, oder? 253 00:12:33,060 --> 00:12:36,090 Sie kam ich gerade aus mit einem Album. 254 00:12:36,090 --> 00:12:39,600 Also musste ich ihr eine neue Datei zu öffnen. 255 00:12:39,600 --> 00:12:43,810 So wie unsere C-Code für den Betrieb - 256 00:12:43,810 --> 00:12:47,890 und ich denke, der Grund, warum ich wählte Dateien war denn dies ist Art von dem Ausmaß 257 00:12:47,890 --> 00:12:52,000 der I / O-Arbeit, die wir in C gemacht habe ein Gefühl, dass es Eingang-Ausgang. 258 00:12:52,000 --> 00:12:55,070 Diesen Code, so nennen wir das tut dies f geöffnet. 259 00:12:55,070 --> 00:12:59,370 Und dann in der nächsten Zeile der Programm, können wir nun mit f zu arbeiten. 260 00:12:59,370 --> 00:13:02,710 >> Also das wäre ein Beispiel für etwas zu sein das ist wie Synchron-oder 261 00:13:02,710 --> 00:13:06,850 Sperrung, weil an diesem ersten Linie dort sind wir, bis wir warten 262 00:13:06,850 --> 00:13:08,110 bekommen die Datei geöffnet. 263 00:13:08,110 --> 00:13:12,260 So in der zweiten Zeile, wir wissen, dass wir mit f zu arbeiten, aber das bedeutet, dass 264 00:13:12,260 --> 00:13:16,240 dass die zweite Linie nicht wirklich laufen kann bis die erste Zeile abgeschlossen ist. 265 00:13:16,240 --> 00:13:17,760 Heißt das Sinn? 266 00:13:17,760 --> 00:13:20,890 >> Also das wäre schlecht zu setzen in einem Ereignishandler. 267 00:13:20,890 --> 00:13:23,920 Und der Grund dafür ist, dass diese Art von Wartezeiten, oder? 268 00:13:23,920 --> 00:13:26,500 So würde das uns wieder zurück dasselbe ist. 269 00:13:26,500 --> 00:13:29,470 Und jetzt würden wir nicht einmal die Nutzen der mehreren Threads oder 270 00:13:29,470 --> 00:13:32,390 Prozesse weil wir ein Thread in Node.js. 271 00:13:32,390 --> 00:13:35,496 Heißt das Sinn machen, alle? 272 00:13:35,496 --> 00:13:35,990 >> ZIELGRUPPE: Warten. 273 00:13:35,990 --> 00:13:36,980 Also, was ist der Ersatz? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Oh, also ja. 275 00:13:37,840 --> 00:13:39,560 So werde ich zu erreichen einwechseln. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 So was, wenn wir etwas hatten dass sah aus wie das? 278 00:13:42,960 --> 00:13:45,730 So was, wenn ich jetzt bearbeitet f ein wenig zu öffnen? 279 00:13:45,730 --> 00:13:48,370 Also ich bin in der gleichen Durch zwei Argumente wie zuvor. 280 00:13:48,370 --> 00:13:52,610 Ich liebe immer noch den neuen Song dass sie kam mit. 281 00:13:52,610 --> 00:13:57,260 Aber ich vorbei eine dritte Sache, die wird diese Variable namens Code. 282 00:13:57,260 --> 00:14:02,280 >> Aber was ist eigentlich Code in diesem Zusammenhang? 283 00:14:02,280 --> 00:14:05,360 Ist es wie bei einer normalen C-Variable? 284 00:14:05,360 --> 00:14:06,740 Es ist eine Funktion, oder? 285 00:14:06,740 --> 00:14:09,450 Und das kann ein wenig komisch, weil sein Ich bin eigentlich wie jetzt vorbei ein 286 00:14:09,450 --> 00:14:12,320 Funktion in einer anderen Funktion. 287 00:14:12,320 --> 00:14:14,400 >> So ein paar Dinge, über die diese beachten. 288 00:14:14,400 --> 00:14:17,145 Man, ich bin nicht wirklich fordern der Code-Funktion. 289 00:14:17,145 --> 00:14:20,650 So können Sie nicht sehen, die mit Code paren links, rechts paren. 290 00:14:20,650 --> 00:14:23,010 Ich bin nur auf der Durch im Code. 291 00:14:23,010 --> 00:14:26,990 Und in C, was dies tatsächlich tun wird ein Zeiger geben, mich zu diesem tatsächlichen 292 00:14:26,990 --> 00:14:29,740 Code ein, und dann könnte es laufen. 293 00:14:29,740 --> 00:14:33,350 Aber nur darüber nachdenken, wie du bist Passieren der Code ausgeführt werden, wenn 294 00:14:33,350 --> 00:14:35,150 die Datei geöffnet wird. 295 00:14:35,150 --> 00:14:41,430 >> Jedoch bedeutet dies, dass nun die Rest meines Programms, das tun konnte, 296 00:14:41,430 --> 00:14:47,050 andere Sachen, auch weiterhin andere tun Sachen, während wir, nicht wirklich warten, aber 297 00:14:47,050 --> 00:14:50,890 nur im Hinterkopf haben, dass wenn dieser Datei geöffnet ist, führen Sie diese 298 00:14:50,890 --> 00:14:52,130 Code an der Spitze. 299 00:14:52,130 --> 00:14:53,390 Heißt das Sinn? 300 00:14:53,390 --> 00:14:58,060 >> Und nun die Idee, die hinter Node.js ist, dass der Code in der do Sachen mit f 301 00:14:58,060 --> 00:15:04,590 Teil sollte recht kurz und einfach sein und einfach und nicht wirklich sein 302 00:15:04,590 --> 00:15:06,160 sehr rechenintensiv. 303 00:15:06,160 --> 00:15:09,390 Er kann eine andere Datei zu öffnen, aber das sollte auch ziemlich schnell sein 304 00:15:09,390 --> 00:15:14,710 denn es sollte einfach sagen, das andere tun f zu öffnen, und rufen Sie dann diese anderen Code. 305 00:15:14,710 --> 00:15:19,100 >> Also, nur um ganz klar, die f öffnen das macht das neue Katy Perry Song 306 00:15:19,100 --> 00:15:23,060 getan mp3, das wird ziemlich viel sofort zurück. 307 00:15:23,060 --> 00:15:27,820 Und dann können wir nur weiterhin tun andere Sachen, weil alle, die jetzt f 308 00:15:27,820 --> 00:15:33,410 offene Aufforderung nicht sagen, das ist im Grunde f zugrunde liegenden Open-Code öffnen Sie diese Datei 309 00:15:33,410 --> 00:15:36,020 und wenn Sie fertig sind diese Öffnung Datei oder wenn Sie es zurück zu bekommen, 310 00:15:36,020 --> 00:15:37,480 führen, dass Code. 311 00:15:37,480 --> 00:15:39,540 Aber es bedeutet nicht, dass der Code tatsächlich ausgeführt. 312 00:15:39,540 --> 00:15:41,815 Und Sie hatten eine Frage? 313 00:15:41,815 --> 00:15:46,180 >> ZIELGRUPPE: Sie schien zu bedeuten, ein paar Zeiten, die rechnerisch hinzufügen 314 00:15:46,180 --> 00:15:50,545 Code intensive Art brechen das [Unverständlich] basiertes System. 315 00:15:50,545 --> 00:15:51,795 [Unverständlich]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: Das ist eine große Frage. 318 00:15:55,290 --> 00:15:59,280 So habe ich eigentlich ein Beispiel, wie Sie integrieren könnte rechnerisch 319 00:15:59,280 --> 00:16:01,090 intensive Code in ein kleines bisschen. 320 00:16:01,090 --> 00:16:03,620 Also, wenn wir auf die Code-Beispiele zu erhalten, Ich werde Sie sicher, dass ein zu ziehen. 321 00:16:03,620 --> 00:16:04,700 Ist das OK? 322 00:16:04,700 --> 00:16:05,950 Danke. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Was war Ihr Name? 325 00:16:08,750 --> 00:16:10,620 >> ZIELGRUPPE: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron bringt eine sehr guter Punkt, nämlich, dass, wenn ich 327 00:16:14,830 --> 00:16:18,560 einige rechenintensiven Code in das mach was mit f Teil, den Rest 328 00:16:18,560 --> 00:16:22,880 mein Programm kann nicht ausgeführt werden und kann nicht hören für neue Anforderungen oder etwas, bis alle 329 00:16:22,880 --> 00:16:24,270 das Zeug ist beendet. 330 00:16:24,270 --> 00:16:27,390 Also, wenn ich Knoten Schreiben von Code im Allgemeinen wenn wir etwas tun, wie werde ich 331 00:16:27,390 --> 00:16:33,060 später vorschlagen, wenn wir auf die Code-Beispiele, muss ich sicher sein, dass 332 00:16:33,060 --> 00:16:36,060 mein Code nicht binden Diese Ereignisschleife. 333 00:16:36,060 --> 00:16:38,120 Heißt das Sinn? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Kühl. 336 00:16:40,040 --> 00:16:47,090 >> So bietet Node.js diesem Rahmen Sie können diese ereignisgesteuert bauen 337 00:16:47,090 --> 00:16:48,210 Server mit. 338 00:16:48,210 --> 00:16:53,460 Diese Art von asynchronen So hat sie nicht-blockierende I / O-Bibliotheken, während 339 00:16:53,460 --> 00:16:56,800 die Standard-C-Bibliotheken, die wir waren Arbeit mit, wie wenn Sie nur 340 00:16:56,800 --> 00:16:59,500 verwenden sie in der gleichen Weise, die wir haben wurde mit f mit ihnen öffnet und 341 00:16:59,500 --> 00:17:03,000 Sachen, die blockieren, weil Sie haben tatsächlich zu warten 342 00:17:03,000 --> 00:17:04,470 die Datei zu öffnen. 343 00:17:04,470 --> 00:17:09,290 >> Aber Node.js gibt Ihnen das und es im Grunde knüpft an die Google-V8 344 00:17:09,290 --> 00:17:14,030 JavaScript-Engine, die der Grund ist, dass Chrome so schnell in die Verarbeitung 345 00:17:14,030 --> 00:17:17,040 JavaScript weil es hat diese V8-Motor. 346 00:17:17,040 --> 00:17:22,460 Also ich weiß, das klingt wie einer von denen, WWDC Entwicklerkonferenzen Sache 347 00:17:22,460 --> 00:17:25,390 wo sie werfen nur ein paar der Brief Nummer Dinge für Prozessoren 348 00:17:25,390 --> 00:17:26,910 und sagen, das ist so cool. 349 00:17:26,910 --> 00:17:34,200 Aber es ist cool, dass sie es taten dies, weil JavaScript - 350 00:17:34,200 --> 00:17:37,010 oder vielleicht, wenn Sie nicht kennen JavaScript weil wir noch nicht gehabt haben 351 00:17:37,010 --> 00:17:38,180 die Vorträge auf sie - 352 00:17:38,180 --> 00:17:40,770 aber JavaScript ist eine interpretierte Sprache. 353 00:17:40,770 --> 00:17:41,970 >> Und das ist ein wichtiger Punkt, auch. 354 00:17:41,970 --> 00:17:45,790 Daher ist es wichtig für unsere Web- Server, schnell zu sein, oder? 355 00:17:45,790 --> 00:17:49,970 Und wenn wir gerade läuft JavaScript Code, der mit interpretiert wurde nur 356 00:17:49,970 --> 00:17:52,130 alle alten Dolmetscher, es könnte langsam sein. 357 00:17:52,130 --> 00:17:55,980 So Knoten profitiert von dieser super schnelle V8-Interpreter. 358 00:17:55,980 --> 00:17:59,580 Und ich weiß nicht, ob sie es mit dem Namen weil der V8 Ohrfeige in der Stirn 359 00:17:59,580 --> 00:18:01,110 Sache, aber OK. 360 00:18:01,110 --> 00:18:07,070 >> Also habe ich einige Beispiele vorbereitet unter dieser URL. 361 00:18:07,070 --> 00:18:10,490 Nach dem Seminar bin ich irgendwie zu gehen, darüber reden, wie man Knoten-Set erhalten 362 00:18:10,490 --> 00:18:13,570 , aber für jetzt, ich will einfach irgendwie durch einige Code-Beispiele gehen. 363 00:18:13,570 --> 00:18:17,250 Also, wenn Sie folgen möchten, können alle Quellcode ist dort zur Verfügung. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Also werde ich diese URL verlassen sich für ein wenig. 366 00:18:22,280 --> 00:18:24,440 Und dann bin ich gerade dabei, wechseln in das Terminal. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Sind alle gut mit dieser URL? 369 00:18:34,400 --> 00:18:37,990 So werde ich zum Umschalten zu meinem Terminal hier. 370 00:18:37,990 --> 00:18:42,030 >> Also hier ist der Code, der Ich habe für heute. 371 00:18:42,030 --> 00:18:43,960 Warum gehen wir nicht beginnen mit simpler.js-Datei? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Die andere Sache ist, dass all dies Code wird sich in geschrieben werden 374 00:18:52,100 --> 00:18:56,660 JavaScript denen Sie oder möglicherweise nicht vertraut sind. 375 00:18:56,660 --> 00:19:00,170 Ich denke, ein paar Dinge ist, dass viele JavaScript-Code ist die Art von 376 00:19:00,170 --> 00:19:04,000 Syntax und Struktur sehr ähnlich ist C, so können Sie Art abholen, wie 377 00:19:04,000 --> 00:19:05,020 Sie gehen zusammen. 378 00:19:05,020 --> 00:19:08,750 Ich habe versucht, eine Menge von der Schreib Startcode für diese in einer Weise, dass es 379 00:19:08,750 --> 00:19:11,230 ähnlich zu C, so dass es ein wenig mehr lesbar. 380 00:19:11,230 --> 00:19:15,980 Aber wie wir Fortschritte, ich werde sein zeigt einige der zusätzlichen 381 00:19:15,980 --> 00:19:18,980 Features von JavaScript, dass sind irgendwie cool. 382 00:19:18,980 --> 00:19:21,510 >> Aber schauen wir uns an diesem Beispielprogramm. 383 00:19:21,510 --> 00:19:24,820 Ich denke, alles ist dort ab zu schneiden. 384 00:19:24,820 --> 00:19:28,500 Ich werde einfach zu beheben, dass die realen schnell, ob das OK ist oder nicht. 385 00:19:28,500 --> 00:19:31,400 Ich weiß nicht, was dieser tun wird. 386 00:19:31,400 --> 00:19:34,660 Ist das ein wenig besser? 387 00:19:34,660 --> 00:19:36,510 Können Sie die var und Sachen zu sehen? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Also die erste Zeile ist wie der JavaScript- Version einer variablen 390 00:19:44,120 --> 00:19:44,800 Erklärung. 391 00:19:44,800 --> 00:19:49,870 Also nur zu markieren, was würde dies aussehen wie in C. Das ist also genau wie 392 00:19:49,870 --> 00:19:52,620 mir sagen Index gleich drei oder so ähnlich. 393 00:19:52,620 --> 00:19:55,740 Ich habe also nicht den Typ. 394 00:19:55,740 --> 00:20:00,780 JavaScript hat zwar Typen, aber es ist sehr dynamisch in der Natur eingegeben, so 395 00:20:00,780 --> 00:20:02,580 nicht bieten jede Art von Typ auf sie. 396 00:20:02,580 --> 00:20:03,670 So hat es gerade var. 397 00:20:03,670 --> 00:20:05,320 Das ist wie variabel. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> Und ich rufe diese Variable HTTP. 400 00:20:08,340 --> 00:20:12,480 Und auf meiner rechten Seite, ich habe die Ausdruck, möchte ich in HTTP setzen. 401 00:20:12,480 --> 00:20:14,960 Und das sagt erfordern HTTP. 402 00:20:14,960 --> 00:20:18,500 So ist diese Art von ähnlich umfassen. 403 00:20:18,500 --> 00:20:22,940 Es ist ein wenig mehr wie mächtiger als sind in dem Sinne, die zählen 404 00:20:22,940 --> 00:20:26,100 würde einfach kopieren und fügen Sie den Kopf Datei für die Funktionsprototypen oder 405 00:20:26,100 --> 00:20:27,930 was auch immer mit den Typdefinitionen. 406 00:20:27,930 --> 00:20:30,590 Aber verlangen ist eigentlich los um uns den Code. 407 00:20:30,590 --> 00:20:33,280 >> So haben Sie es als denken können Import von etwas Code. 408 00:20:33,280 --> 00:20:37,960 Also irgendwo in der Node.js-Modul System oder was auch immer, sie alle haben diese 409 00:20:37,960 --> 00:20:40,790 HTTP-Server-Code, so bin ich nur Holen sie für meine eigenen 410 00:20:40,790 --> 00:20:43,130 persönlichen Einsatz in diesem Programm. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> So dann habe ich diese Funktion dass ich geschrieben habe. 413 00:20:46,930 --> 00:20:50,330 Und merken, hatte ich nicht, um anzugeben der Rückgabetyp oder die Art der 414 00:20:50,330 --> 00:20:51,140 Argumente wieder. 415 00:20:51,140 --> 00:20:54,440 So Art von lose eingetippt diese Art von Sinn. 416 00:20:54,440 --> 00:20:57,290 Zwei Argumente, die es in, die Anfrage und Antwort. 417 00:20:57,290 --> 00:21:02,080 Also das ist eine Art, wie konzeptionell aus dem Bild, das wir hatten vertraut 418 00:21:02,080 --> 00:21:05,280 auf dem Bildschirm vor, weil wir diesen Antrag zu bekommen, die wir 419 00:21:05,280 --> 00:21:06,410 haben von dem Benutzer. 420 00:21:06,410 --> 00:21:09,170 Und dann eine Antwort haben wir, dass wir können die Dinge zu schreiben. 421 00:21:09,170 --> 00:21:15,060 >> Also die erste Zeile der dies tut res.writeHead 200 und dann dieses 422 00:21:15,060 --> 00:21:17,070 Inhaltstyp Text Ebene. 423 00:21:17,070 --> 00:21:19,300 Also lassen Sie uns dies Stück ein wenig auseinander. 424 00:21:19,300 --> 00:21:22,340 Also lasst uns einfach auf res.write konzentrieren ein wenig. 425 00:21:22,340 --> 00:21:28,420 So schreiben ist im Grunde, und Schreibkopf, sind nur Möglichkeiten, um Art schreiben 426 00:21:28,420 --> 00:21:29,960 Dinge auf die Antwort. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 So schreiben Kopf, wenn jemand erinnert sich aus dem HTTP-Vortrag, tun Sie Kerle 429 00:21:36,230 --> 00:21:39,940 erinnern an die Kopfzeilen oben auf dem HTTP-Sache? 430 00:21:39,940 --> 00:21:43,580 Also, warum ich nicht einfach Demo nicht Header, sehr kurz. 431 00:21:43,580 --> 00:21:44,640 Wäre das hilfreich sein? 432 00:21:44,640 --> 00:21:45,500 Oder sollen wir einfach irgendwie - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Sicher. 435 00:21:46,740 --> 00:21:52,340 >> Also, wenn Ihr Browser geht auf google.com oder so etwas, 436 00:21:52,340 --> 00:21:54,250 es gibt tatsächlich ein wenig mehr - 437 00:21:54,250 --> 00:21:55,380 das ist wie ein Geheimnis - 438 00:21:55,380 --> 00:21:58,340 es ist wie ein wenig mehr Informationen das kommt durch das Rohr als nur 439 00:21:58,340 --> 00:22:00,180 der kleine Suche und alles. 440 00:22:00,180 --> 00:22:03,550 So zeigen Ihnen diese, werde ich ein Programm namens Locken zu verwenden. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Also das ist etwas, dass Sie an laufen Mac OSX Befehlszeile oder in der 443 00:22:08,020 --> 00:22:09,830 Gerät oder was auch immer. 444 00:22:09,830 --> 00:22:17,050 Und so, wenn ich Locken HTTP google.com, Ich werde den HTML zu sehen. 445 00:22:17,050 --> 00:22:21,230 Und das ist, in Fairness, nur die HTML, die Art sagt Ihnen, 446 00:22:21,230 --> 00:22:24,695 Umleitung auf www, wenn Ihr Browser nicht automatisch verarbeiten die 447 00:22:24,695 --> 00:22:27,110 Umleitung. 448 00:22:27,110 --> 00:22:33,390 >> So ist das nur HTML, aber ich werde um diesen Bindestrich ich markieren Locken hinzuzufügen. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 Und das wird sich zeigen mir die Header. 451 00:22:35,600 --> 00:22:40,640 Das ist also auch Informationen, die kommt durch, wenn ich diese Antwort. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Also an der Spitze, das sehen Sie HTTP 301 permanent zu bewegen. 454 00:22:45,320 --> 00:22:49,470 Und das ist wichtig, weil Art von dies bezieht sich auf den Statuscode. 455 00:22:49,470 --> 00:22:53,750 Also das hier ist der 301-Statuscode, das ist im Grunde nur eine ganze Zahl 456 00:22:53,750 --> 00:22:57,750 dass der Browser oder wer auch immer sagt, ist lesen, wenn Sie behaupten, dass 457 00:22:57,750 --> 00:23:01,460 Sie sind ein Browser und Sie sehen, sind diese, im Grunde jetzt, wenn Sie schauen 458 00:23:01,460 --> 00:23:04,960 und, dass Sie eine 301 sehen, wissen Sie, ich habe , etwas Besonderes zu tun, basierend auf 459 00:23:04,960 --> 00:23:08,810 301, oder etwas Besonderes passiert basierend auf dem 301. 460 00:23:08,810 --> 00:23:12,640 So sagt es dauerhaft verschoben. 461 00:23:12,640 --> 00:23:17,700 >> Und dann, im Grunde haben wir eine Reihe von Schlüssel-Wert-Paaren. 462 00:23:17,700 --> 00:23:22,100 Die Lage So bekommen wir ist www.google.com. 463 00:23:22,100 --> 00:23:25,190 Und dann all diese Art von anderen Sachen, aber im Grunde, was die Lage ist 464 00:23:25,190 --> 00:23:29,662 Sprichwort ist der neue Standort unter www.google.com. 465 00:23:29,662 --> 00:23:33,800 So jetzt, wenn Sie google.com gehen, werden Sie Art finden Sie in der Browser-Art von blink 466 00:23:33,800 --> 00:23:38,770 für eine zweite und dann leiten Sie gleich wieder auf www.google.com. 467 00:23:38,770 --> 00:23:41,840 So können die Antworten enthalten diese Header. 468 00:23:41,840 --> 00:23:43,330 >> Und ein paar Dinge, die darauf hinweisen. 469 00:23:43,330 --> 00:23:46,890 Also lassen Sie uns sagen, wir waren tatsächlich erfolgreich beim Besuch einer Web-Seite. 470 00:23:46,890 --> 00:23:49,040 Also lassen Sie mich zu gehen - 471 00:23:49,040 --> 00:23:51,080 was ist eine gute Website? 472 00:23:51,080 --> 00:23:53,285 Ich bin schlecht im Denken der guten Websites auf der Stelle. 473 00:23:53,285 --> 00:23:53,640 >> ZIELGRUPPE: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Lassen Sie uns Wikipedia. 476 00:23:56,040 --> 00:23:58,680 Also hier war ich bewegt. 477 00:23:58,680 --> 00:23:59,240 Oh, Moment. 478 00:23:59,240 --> 00:24:00,160 War ich? 479 00:24:00,160 --> 00:24:00,890 Ja, das war ich. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Also habe ich zu tun, www. 482 00:24:03,005 --> 00:24:06,006 Also werde ich tun, www. 483 00:24:06,006 --> 00:24:09,680 Und wie Sie sehen können, hier ist die ganze HTML dass der Browser würde verarbeiten 484 00:24:09,680 --> 00:24:10,910 für Wikipedia. 485 00:24:10,910 --> 00:24:14,055 >> Aber wenn ich hier oben halten Scrollen, was ich an der Spitze sehen - 486 00:24:14,055 --> 00:24:17,800 wow, es gibt eine Menge von HTML auf Wikipedia - 487 00:24:17,800 --> 00:24:22,550 aber was ich hier an der Spitze zu sehen ist Diese Statuscode 200 im Gegensatz zu den 488 00:24:22,550 --> 00:24:24,570 301, die ich bereits gesehen. 489 00:24:24,570 --> 00:24:27,100 Und feststellen, dass es ein schönes hat freundliche OK daneben. 490 00:24:27,100 --> 00:24:29,470 Also das ist wie der gute Status-Code. 491 00:24:29,470 --> 00:24:31,160 >> Heißt das, dass 200 Nummer bekannt vor? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Ja, denn wenn ich simpler.js, Ich schrieb ein 200 dort. 494 00:24:39,880 --> 00:24:43,290 Also das ist im Grunde sagen, sagen die Browser oder wer auch immer versucht, zu bekommen, 495 00:24:43,290 --> 00:24:45,440 dies, dass sie erfolgreich waren. 496 00:24:45,440 --> 00:24:49,040 Oder dass eine Art, wie wir waren zu erfolgreich. 497 00:24:49,040 --> 00:24:54,320 >> Und es gibt diese Art der speziellen Syntax in Javascript für die Erklärung ein 498 00:24:54,320 --> 00:24:59,870 Karte dieser Tasten wie Inhaltstyp und diese Werte wie Text-Ebene. 499 00:24:59,870 --> 00:25:03,780 Also, wenn Sie bei der Antwort zu suchen, dass wir bekam von Wikipedia zurück, bevor, - 500 00:25:03,780 --> 00:25:06,200 Ich werde versuchen, um zu blättern ein wenig schneller - 501 00:25:06,200 --> 00:25:09,900 Sie diese Tasten wie Server und diese Werte Apache. 502 00:25:09,900 --> 00:25:12,120 So haben Sie Schlüssel und Werte haben. 503 00:25:12,120 --> 00:25:15,930 Und Sie können dies angeben Knoten, was zurück zu senden. 504 00:25:15,930 --> 00:25:19,380 >> Also das ist eigentlich ganz, in einigen Weise, und in gewisser Weise ist es nicht 505 00:25:19,380 --> 00:25:23,170 wirklich, aber es ist ein wenig niedriger Ebene als der PHP-Code, der Sie sein könnten 506 00:25:23,170 --> 00:25:26,980 Schreiben für sieben P gesetzt, weil PHP und Apache Art kümmern sich einige 507 00:25:26,980 --> 00:25:28,150 diese Dinge für Sie. 508 00:25:28,150 --> 00:25:32,520 In PHP können Sie die Standardeinstellung überschreiben Verhalten, indem Sie Ihren eigenen Kopf. 509 00:25:32,520 --> 00:25:35,520 Aber für die Zwecke dieses erhalten wir zu schreiben, unsere eigenen Header. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> So hat diese Linie sinnvoll, alle, die Schreibkopfzeile? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Ehrfürchtig. 514 00:25:42,280 --> 00:25:45,870 >> Also, was ich zu tun ist, ich am Ende die Antwort sagen hallo Welt. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Aber das ist nur eine Funktion Request-Handler genannt. 517 00:25:49,920 --> 00:25:53,510 So, jetzt habe ich eigentlich zu tun Art von etwas mit dieser Funktion, oder? 518 00:25:53,510 --> 00:25:59,170 >> So, hier, was ich zu tun ist, gibt es diese Linie, die var-Server Gleichen tut 519 00:25:59,170 --> 00:26:03,530 HTTP.create Server, und dann habe ich Pass in den Request-Handler. 520 00:26:03,530 --> 00:26:06,080 Also das ist eine Art der Knoten Weg zur Schaffung eines Servers. 521 00:26:06,080 --> 00:26:08,790 Und feststellen, dass ich vorbei in der Request-Handler. 522 00:26:08,790 --> 00:26:12,290 Also das sagt die createServer Funktion, die ich will, dass du mir einen machen 523 00:26:12,290 --> 00:26:16,270 Server, und wenn das Server empfängt eine Antwort, ich brauche dich, dies zu rufen 524 00:26:16,270 --> 00:26:18,680 Request-Handler-Funktion. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Damit Linie ziemlich endet sofort. 527 00:26:22,290 --> 00:26:28,780 Also der var-Serverlinie richtig gemacht nachdem Sie, dass ziemlich viel zu tun. 528 00:26:28,780 --> 00:26:31,770 Ich meine, es hat die Einrichtung einige interne Zustand zu wissen, dass Sie müssten 529 00:26:31,770 --> 00:26:35,400 nennen das Request-Handler-Funktion, aber es geht nicht, dort zu sitzen und 530 00:26:35,400 --> 00:26:37,730 Sagen hat den Benutzer gesendet mir ein Antrag noch? 531 00:26:37,730 --> 00:26:39,270 Hat der Benutzer eine Anfrage schickte mich noch? 532 00:26:39,270 --> 00:26:40,780 So ist es nicht zu blockieren. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Also, was tun, ist es im Grunde Jetzt speichert einen Zeiger zu diesem Code 535 00:26:46,120 --> 00:26:49,670 Anfrage-Handler-Funktion, und dann wird, dass Code ausgeführt werden, wenn jemand 536 00:26:49,670 --> 00:26:52,170 eine Anfrage. 537 00:26:52,170 --> 00:26:54,120 Und dann tun wir server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> Die 1337 ist ziemlich willkürlich. 540 00:26:59,960 --> 00:27:02,285 Ich hatte keinen besonderen Grund für die Kommissionierung der Nummer ist. 541 00:27:02,285 --> 00:27:03,860 Es war total zufällig. 542 00:27:03,860 --> 00:27:07,010 Aber das nur gibt den Port. 543 00:27:07,010 --> 00:27:10,640 So sind die meisten Web-Server werden Sie sehen, dass sie Port 80, denn das ist eine Art 544 00:27:10,640 --> 00:27:11,810 wie von der Konvention. 545 00:27:11,810 --> 00:27:16,170 Also, wenn ich so etwas wie, Ich weiß nicht, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 und ich legte Doppelpunkt 8 - 547 00:27:17,700 --> 00:27:18,610 oh wow, die Sie nicht sehen können, dass. 548 00:27:18,610 --> 00:27:19,370 Es tut mir leid. 549 00:27:19,370 --> 00:27:21,820 Aber wenn ich Wikipedia - 550 00:27:21,820 --> 00:27:24,810 Ich werde es hier schreiben nur so, dass es ist klar, an der Kamera. 551 00:27:24,810 --> 00:27:29,150 Aber wenn ich dieses in einem Browser mit ein Doppelpunkt 80, der angibt, gehen Sie zu 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org am Port 80. 553 00:27:31,430 --> 00:27:36,200 So ist es wie, wie die Vereinigten Staaten mehrere Anschlüsse wie, wo Sie versenden können 554 00:27:36,200 --> 00:27:37,440 Dinge zu Art. 555 00:27:37,440 --> 00:27:40,730 So ist es wie gehen Sie zu diesem besonderen legen auf diesem Server. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Also habe ich nur 1337 wählte. 558 00:27:45,730 --> 00:27:47,910 Es gibt eine ganze Reihe von Zahlen dass Sie auswählen können. 559 00:27:47,910 --> 00:27:50,390 Das war nicht ganz Besonderes. 560 00:27:50,390 --> 00:27:54,560 >> Aber was ich jetzt tun ist werde ich Knoten laufen. 561 00:27:54,560 --> 00:27:59,730 Lassen Sie mich tatsächlich geben, dass ein paar Zeilen nach unten, so dass man es sehen kann. 562 00:27:59,730 --> 00:28:03,130 Ich werde Node tun, und ich bin werde simpler.js laufen. 563 00:28:03,130 --> 00:28:06,880 Und wir erfahren, wie man sprechen Knoten in einem kleinen Bit gesetzt. 564 00:28:06,880 --> 00:28:09,350 Aber jetzt ist es nur dem der Server läuft. 565 00:28:09,350 --> 00:28:14,360 >> Also eine Sache, wir können versuchen, die möglicherweise nicht sein, dass wir können, spannend ist eigentlich 566 00:28:14,360 --> 00:28:16,300 versuchen, es in Locken zugreifen. 567 00:28:16,300 --> 00:28:20,680 So kann ich tun, Locken, und mein Maschine lokalen Host. 568 00:28:20,680 --> 00:28:24,600 Sie sehen auch geschrieben wie dies manchmal. 569 00:28:24,600 --> 00:28:29,810 Local Host 127.0.0.1 und sind so eine Art wie von Ihrem Computer zu Hause. 570 00:28:29,810 --> 00:28:33,180 So ist es wie im Gespräch mit Ihrem eigenen Computer. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> Und dann kann ich sagen, 1337. 573 00:28:36,030 --> 00:28:39,630 Also, wenn ich dieses Codezeile sie sagt hallo Welt. 574 00:28:39,630 --> 00:28:44,050 Und wenn ich wollte, dass die Sachen zu sehen, die hatte Inhaltstyp Text oder Klar 575 00:28:44,050 --> 00:28:46,560 was auch immer, ich konnte sogar setzen dazu hier. 576 00:28:46,560 --> 00:28:48,810 Und feststellen, dass es nicht sagen, OK. 577 00:28:48,810 --> 00:28:50,810 Und ich habe Klartext. 578 00:28:50,810 --> 00:28:53,140 Und dann gibt es diese Art von allen anderen Sachen, die Knoten werden in hinzufügen 579 00:28:53,140 --> 00:28:54,440 für mich da. 580 00:28:54,440 --> 00:28:55,700 Das ist nicht super wichtig. 581 00:28:55,700 --> 00:28:58,230 >> Ich meine, es gibt eine Art von technischen Aspekte, die bei der Art sind 582 00:28:58,230 --> 00:29:02,280 cool, darüber zu sprechen, aber nur um zu zeigen Sie, ich habe auch die Macht, 583 00:29:02,280 --> 00:29:03,070 ändern Sie diese um. 584 00:29:03,070 --> 00:29:06,280 So kann ich nur hinzufügen, ein Bündel von Sachen. 585 00:29:06,280 --> 00:29:11,780 Und dann jetzt, wenn ich in meinem Ausgangs, wird es sein, dass. 586 00:29:11,780 --> 00:29:19,740 Also diese Kopfzeilen bedeuten, bestimmte Dinge zu Browsern und solche Dinge. 587 00:29:19,740 --> 00:29:23,040 >> Und Header kann grundsätzlich sagen, einen Browser wie man auf etwas reagiert. 588 00:29:23,040 --> 00:29:26,280 Wenn Sie jemals von Cookies schon gehört, oder wenn Sie schon einmal geärgert haben 589 00:29:26,280 --> 00:29:29,330 von einer Web-Seite Setzen von Cookies, oder Cookie-Block oder ausgeschaltet 590 00:29:29,330 --> 00:29:30,320 so ähnlich. 591 00:29:30,320 --> 00:29:33,040 Sie können tatsächlich eingestellt Cookies in diesen Header. 592 00:29:33,040 --> 00:29:36,990 So erzählen sie, wie man einen Browser Verhalten in einigen Fällen. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Das war also simpler.js. 595 00:29:40,310 --> 00:29:42,780 Hat jemand irgendwelche Fragen haben, an diesem Quellcode-Datei? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 OK. 598 00:29:45,610 --> 00:29:46,490 Kühl. 599 00:29:46,490 --> 00:29:50,780 >> Lassen Sie uns also entfernen Sie das r aus, dass und schauen Sie sich simple.js. 600 00:29:50,780 --> 00:29:53,010 Also das ist so ziemlich das gleiche Programm. 601 00:29:53,010 --> 00:29:56,030 Ich habe es nur ein wenig anders denn ich wollte von Highlight zu sortieren 602 00:29:56,030 --> 00:29:57,850 einige Features von JavaScript. 603 00:29:57,850 --> 00:30:03,880 >> So fest, dass der Request-Handler Funktion völlig verschwunden. 604 00:30:03,880 --> 00:30:05,800 Oh ja, haben Sie eine Frage haben? 605 00:30:05,800 --> 00:30:08,200 >> ZIELGRUPPE: Ja, die Argumente die zu übergeben werden 606 00:30:08,200 --> 00:30:10,120 Funktion, was sind sie? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: Das sind also JavaScript-Objekte. 608 00:30:12,050 --> 00:30:15,230 In der Dokumentation Node.js, es im Grunde sagt, welche Methoden 609 00:30:15,230 --> 00:30:15,910 auf ihnen zur Verfügung. 610 00:30:15,910 --> 00:30:19,602 Wir haben gerade zufällig den Zugang zu diese Methode aufgerufen Schreibkopf und am Ende 611 00:30:19,602 --> 00:30:20,730 und solche Sachen. 612 00:30:20,730 --> 00:30:22,590 Aber es gibt eine ganze Reihe weitere Methoden. 613 00:30:22,590 --> 00:30:27,670 >> Und zum Beispiel, wie eine von ihnen insbesondere auf rec, die Sie tun können 614 00:30:27,670 --> 00:30:34,540 so etwas wie die rec.method wird Ihnen sagen, ob es ein HTTP-GET-oder 615 00:30:34,540 --> 00:30:36,780 HTTP-Post-Anfragen und Sachen. 616 00:30:36,780 --> 00:30:39,100 So gibt es alle Arten von verschiedenen Eigenschaften, aber sie sind beide 617 00:30:39,100 --> 00:30:42,560 JavaScript-Objekte, und sie haben nur Funktionen mit ihnen verbunden, dass Sie 618 00:30:42,560 --> 00:30:43,850 Dinge zu schreiben. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> So bemerken, dass die Request-Handler ist völlig verschwunden. 621 00:30:49,030 --> 00:30:52,650 Aber der Code, den ich in Anfrage hatte Handler ist immer noch da. 622 00:30:52,650 --> 00:30:56,520 Ich habe immer noch dieses res.writeHead und ich habe immer noch dieses res.end. 623 00:30:56,520 --> 00:31:00,270 Und was das ist ein Beispiel für in JavaScript ist diese Idee einer 624 00:31:00,270 --> 00:31:01,460 anonyme Funktion. 625 00:31:01,460 --> 00:31:04,180 und anonym ist wie ein passender Name für sie, weil sie buchstäblich nicht 626 00:31:04,180 --> 00:31:05,180 haben einen Namen. 627 00:31:05,180 --> 00:31:07,900 Es gibt keine Funktionsanforderung Handler drin. 628 00:31:07,900 --> 00:31:10,110 >> Hat keinen Namen, aber es immer noch ist ein Argument nehmen. 629 00:31:10,110 --> 00:31:12,250 So habe ich immer noch rec und res. 630 00:31:12,250 --> 00:31:16,180 Und ich habe immer noch den Code. 631 00:31:16,180 --> 00:31:18,930 Das ist völlig in Ordnung JavaScript-Code. 632 00:31:18,930 --> 00:31:22,540 So kann ich eine Funktion, ohne zu erklären ausdrücklich die ihm einen Namen. 633 00:31:22,540 --> 00:31:24,250 Es ist zunächst etwas verwirrend. 634 00:31:24,250 --> 00:31:26,230 Es gibt einige Dinge, wie nützlich dass Sie tun können, mit 635 00:31:26,230 --> 00:31:28,450 diese anonyme Funktionen. 636 00:31:28,450 --> 00:31:32,100 Hat jemand irgendwelche Fragen hierzu haben, oder ist es OK, nur um, denn jetzt, 637 00:31:32,100 --> 00:31:34,130 Art einfach akzeptieren, dass es wird das gleiche tun? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Yep? 640 00:31:37,125 --> 00:31:38,680 >> ZIELGRUPPE: Sind Funktionen zuerst Klasse in JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Sie sind erste Klasse in JavaScript. 642 00:31:41,020 --> 00:31:45,490 Und wissen, dass diese Konzepte Bestehen in einer anonymen Funktion wie 643 00:31:45,490 --> 00:31:49,600 an die JavaScript-dies zutrifft, die Sie kann in Ihrem letzten Projekt schreiben 644 00:31:49,600 --> 00:31:51,260 der Web-Browser zu. 645 00:31:51,260 --> 00:31:56,700 So zum Beispiel, in der JavaScript-in Ihrem Browser, es ist auch etwas Veranstaltung 646 00:31:56,700 --> 00:32:00,680 in dem Sinne, dass das, was Sie angetrieben werde haben, ist, wenn der Benutzer dies klickt 647 00:32:00,680 --> 00:32:02,640 Taste, möchte ich Sie, diesen Code ausführen. 648 00:32:02,640 --> 00:32:07,070 >> So ist es die gleiche Art von Ideen des Client-Seite, wenn ein Mausklick oder sie 649 00:32:07,070 --> 00:32:09,870 Maus über einem gewissen Bild auf Ihrem Web-Seite, führen Sie diesen Code. 650 00:32:09,870 --> 00:32:11,350 Das kann zu Server anwenden. 651 00:32:11,350 --> 00:32:16,380 Also das ist eine Art, wie die spannende Grund, warum JavaScript ist eine wirklich 652 00:32:16,380 --> 00:32:19,810 geeignet oder einige Leute denken, es ist ein geeignete Sprache für diese Art von 653 00:32:19,810 --> 00:32:22,530 Veranstaltung Treiber-Server, weil Sie diese anonyme Funktionen. 654 00:32:22,530 --> 00:32:26,150 Sie haben die ganze Idee der diese asynchronen Code. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Wer irgendwelche Fragen? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Das war also simple.js. 659 00:32:33,440 --> 00:32:38,070 Also schauen wir uns an einem mehr oder ein paar mehr. 660 00:32:38,070 --> 00:32:42,040 Also das ist sleep.js. 661 00:32:42,040 --> 00:32:47,160 So ist jeder vertraut die C-Funktion Schlaf? 662 00:32:47,160 --> 00:32:50,936 Von vielleicht einer der früheren Vorlesungen oder so etwas? 663 00:32:50,936 --> 00:32:54,650 >> Also im Grunde kann man geben Ich denke, eine Anzahl der Sekunden, oder wenn Sie mit U sind 664 00:32:54,650 --> 00:32:57,080 Schlaf eine Reihe von Millisekunden oder Nanosekunden. 665 00:32:57,080 --> 00:33:00,450 Und im Grunde wird das Programm einfach aufhören Lauf für diesen Zeitraum. 666 00:33:00,450 --> 00:33:01,280 Right? 667 00:33:01,280 --> 00:33:06,970 Und dann wird es irgendwann aufwachen und dann wird es nur weiter laufen 668 00:33:06,970 --> 00:33:08,340 das Programm. 669 00:33:08,340 --> 00:33:12,740 >> Also diese Art von Server gibt der Eindruck des Schlafens. 670 00:33:12,740 --> 00:33:17,580 So bemerken, dass wir die gleiche res.writeHead 200 mit dem Header 671 00:33:17,580 --> 00:33:22,130 vor, aber dann sind wir Aufruf dieser Funktion aufgerufen Satz-Timeout. 672 00:33:22,130 --> 00:33:26,170 Timeout-ist auch in Ihren Web-Browser Google Chrome 673 00:33:26,170 --> 00:33:28,000 oder Safari oder was auch immer. 674 00:33:28,000 --> 00:33:31,720 Und im Grunde, was es hier zu tun wird es nimmt in einer Funktion. 675 00:33:31,720 --> 00:33:33,360 Unsere, wieder ist es ein anonyme Funktion. 676 00:33:33,360 --> 00:33:36,310 Also das ist irgendwie cool, weil wir mit einer anonymen Funktion innerhalb einer 677 00:33:36,310 --> 00:33:38,950 anonyme Funktion die kann ein wenig seltsam. 678 00:33:38,950 --> 00:33:42,270 >> Aber es nimmt diese Funktion, das ist, im Grunde sagen - und die Art und Weise dieser 679 00:33:42,270 --> 00:33:47,430 Arbeiten ist in 5000 Millisekunden, ich will Sie, dass die Funktion ausführen 680 00:33:47,430 --> 00:33:50,830 nur endet die Antwort und schreibt hey. 681 00:33:50,830 --> 00:33:56,730 Also das macht den Eindruck, wie schlafen, aber die Art, das eigentlich 682 00:33:56,730 --> 00:33:59,780 funktioniert, ist, wir werden durchlaufen diese Linie sehr schnell. 683 00:33:59,780 --> 00:34:01,190 Wir stehen noch etwas zu schreiben. 684 00:34:01,190 --> 00:34:03,780 Und dann werden wir auch durchlaufen diese Linie sehr schnell. 685 00:34:03,780 --> 00:34:08,620 So sind wir nicht eigentlich los bis fünf Sekunden warten. 686 00:34:08,620 --> 00:34:11,370 Wir sind gerade dabei, laufen dieser Code sofort. 687 00:34:11,370 --> 00:34:14,219 >> Und dann gibt es wieder diese kleine Ereignisschleife, das nun dieses Ding 688 00:34:14,219 --> 00:34:17,570 Register, die im Grunde nur ständig gehen im Kreis herum 689 00:34:17,570 --> 00:34:21,620 und schaut auf die Uhr in einem einzigen Gewinde und das Sagen hat 5 Sekunden 690 00:34:21,620 --> 00:34:22,360 noch nicht bestanden? 691 00:34:22,360 --> 00:34:26,409 Und dann, wenn sie sieht, dass die zweite Hand hat, wie fünf Sekunden oder bewegt 692 00:34:26,409 --> 00:34:29,190 was auch immer, dann wacht er auf und sagt: oh, was muss ich tun? 693 00:34:29,190 --> 00:34:30,350 Oh ich muss diesen Code ausführen. 694 00:34:30,350 --> 00:34:33,110 Und dann, es wird laufen res.end hey. 695 00:34:33,110 --> 00:34:35,360 >> Also noch einmal, wir warten hier noch nie. 696 00:34:35,360 --> 00:34:38,590 So ist es nicht, dass dieser Code in der Diese Funktion wird auf fünf nehmen 697 00:34:38,590 --> 00:34:39,900 Sekunden zu laufen. 698 00:34:39,900 --> 00:34:43,090 Dieser Code wird ziemlich viel laufen sofort, zumindest relativ zu 699 00:34:43,090 --> 00:34:46,139 die fünf Sekunden, die wir sprachen über früher vor. 700 00:34:46,139 --> 00:34:52,100 >> Also, nur um dies in Aktion zu zeigen, Ich kann Node.sleep.js tun. 701 00:34:52,100 --> 00:34:55,159 Und ich habe etwas durcheinander? 702 00:34:55,159 --> 00:34:56,310 Möglicherweise. 703 00:34:56,310 --> 00:34:57,410 Entschuldigung. 704 00:34:57,410 --> 00:34:59,530 Mal sehen, was wir tun können, um dies zu beheben. 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 OK. 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 Also auf jeden Fall nutzen Node.js. 709 00:35:17,464 --> 00:35:19,440 Ich bin nur ein Scherz. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Nur eine Sekunde. 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 OK. 714 00:35:27,900 --> 00:35:29,130 Ich weiß, was es ist. 715 00:35:29,130 --> 00:35:34,440 >> Also das Problem ist, dass in meinem anderen Registerkarte hier wurde ich laufen bereits auf Node 716 00:35:34,440 --> 00:35:36,590 dass dieselbe Adresse, 1337. 717 00:35:36,590 --> 00:35:43,370 So ist die Fehlermeldung, dass dies warf, wenn wir uns bei es wirklich eng, ist die Adresse in 718 00:35:43,370 --> 00:35:45,180 verwenden, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 So war ich bereits 1337 hier. 720 00:35:47,970 --> 00:35:52,210 Also, wenn ich herunter dieses weg, und dann habe ich jetzt versuchen, dies zu laufen, hoffentlich alles 721 00:35:52,210 --> 00:35:53,210 wird gut. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 So kann man nur eines haben Art hören auf einem Port auf einmal. 724 00:35:57,020 --> 00:35:59,660 Eine andere Lösung wäre für mich gewesen nur bearbeiten, dass Programm und machen 725 00:35:59,660 --> 00:36:02,370 es ist wie 1338 oder so so. 726 00:36:02,370 --> 00:36:04,100 >> Aber jetzt schlafen läuft. 727 00:36:04,100 --> 00:36:06,400 Lassen Sie uns also tatsächlich versuchen Sie es in die Browser diese Zeit, weil es ein 728 00:36:06,400 --> 00:36:09,080 wenig aufregend zu sehen, in einem Terminal. 729 00:36:09,080 --> 00:36:13,560 Also ich werde einfach zu gehen, dass 127-Adresse wieder 1337. 730 00:36:13,560 --> 00:36:14,850 Und wenn Sie es sehen können - 731 00:36:14,850 --> 00:36:18,050 Ich weiß nicht, wenn du kannst - aber mein Browser, die ein sehr, sehr lange 732 00:36:18,050 --> 00:36:20,600 Zeit, oder wie 5 Sekunden laden. 733 00:36:20,600 --> 00:36:23,460 >> Und dann nach, dass es endlich endete die Antwort. 734 00:36:23,460 --> 00:36:29,070 Und Sie können nicht sehen, weil die Sache wird über einen kleinen umgezogen, aber wenn ich 735 00:36:29,070 --> 00:36:32,500 dies ein wenig kleiner, Sie kann sehen, es sagt, hey. 736 00:36:32,500 --> 00:36:35,130 Also habe ich die hey, aber nach fünf Sekunden. 737 00:36:35,130 --> 00:36:38,510 Und es könnte ein wenig sauberer sein zu sehen, hier auf dem Terminal, also bin ich 738 00:36:38,510 --> 00:36:40,980 gehen, um eine zu tun - 739 00:36:40,980 --> 00:36:43,540 wir hier tun - 740 00:36:43,540 --> 00:36:48,370 wir Locken dieser Adresse tun wieder mit dem 1337. 741 00:36:48,370 --> 00:36:50,820 Und ich nur eine Art zu sitzen hier für fünf Sekunden. 742 00:36:50,820 --> 00:36:53,760 Aber beachten Sie, dass der Server kann neue Antworten zu akzeptieren. 743 00:36:53,760 --> 00:36:54,940 So druckt er hey. 744 00:36:54,940 --> 00:36:58,720 >> Und um diese Demo, im Grunde, was Ich habe in diesem anderen Reiter zu tun - 745 00:36:58,720 --> 00:37:02,640 so sagen wir ich das in einem anderen Register, Ich werde Locken und das gleiche zu tun 746 00:37:02,640 --> 00:37:03,780 Sache wieder. 747 00:37:03,780 --> 00:37:06,600 Und ich werde versuchen, diese zu kicken Jungs an der gleichen Zeit. 748 00:37:06,600 --> 00:37:08,260 Also werde ich, dies zu tun, und ich bin gehen hier zu Rennen und ich bin 749 00:37:08,260 --> 00:37:09,650 werde es wieder tun. 750 00:37:09,650 --> 00:37:14,030 >> Und wir machen es so, dass Sie kann sowohl von ihnen zu sehen. 751 00:37:14,030 --> 00:37:20,250 Dass man gedruckt hey, und dass ein gedruckt hey ganz am - 752 00:37:20,250 --> 00:37:22,550 lassen Sie uns dieses Experiment wieder. 753 00:37:22,550 --> 00:37:25,100 Eigentlich verwenden wir diese Trick, wenn es das ist OK. 754 00:37:25,100 --> 00:37:30,520 >> Also ich werde eine Sache verwenden, die Schale erlaubt es mir, im Grunde laufen zwei Kopien 755 00:37:30,520 --> 00:37:32,630 dieses Programms parallel. 756 00:37:32,630 --> 00:37:36,070 Also, es wird das erste Programm ausführen und das zweite Programm parallel. 757 00:37:36,070 --> 00:37:39,060 So jetzt, wenn ich drücken Sie die Eingabetaste, es geht auf Anfrage, dass ziemlich viel machen 758 00:37:39,060 --> 00:37:40,570 augenblicklich gleichzeitig. 759 00:37:40,570 --> 00:37:42,620 So geben wir diese ein Schuss. 760 00:37:42,620 --> 00:37:44,950 >> So, jetzt heißt es bemerken zwei Prozesse. 761 00:37:44,950 --> 00:37:50,630 Und wenn Sie neugierig sind, dass 27.000 Anzahl ist im Grunde die Prozess-ID. 762 00:37:50,630 --> 00:37:52,940 Und dann bemerken, die sie gedruckt hey in der gleichen Zeit. 763 00:37:52,940 --> 00:37:56,820 Es war nicht so, wir mussten warten fünf s für eine und danach 764 00:37:56,820 --> 00:37:59,640 5 Sekunden später bekommen die zweite. 765 00:37:59,640 --> 00:38:03,300 Also das ist eine Art, in gewisser Weise ist es Hinweise, nicht wirklich, aber es ist 766 00:38:03,300 --> 00:38:07,390 intuitive Beweise dafür, dass es nicht nur wie fünf Sekunden warten und Sperr 767 00:38:07,390 --> 00:38:08,960 der gesamte Faden. 768 00:38:08,960 --> 00:38:10,720 OK cool. 769 00:38:10,720 --> 00:38:17,850 >> Also fragte Aaron eine Frage zuvor, dass war, na was ist, wenn wir etwas tun - 770 00:38:17,850 --> 00:38:18,735 Yep? 771 00:38:18,735 --> 00:38:19,051 >> ZIELGRUPPE: Warten. 772 00:38:19,051 --> 00:38:21,585 Wie ist das anders printf Puffer, wenn? 773 00:38:21,585 --> 00:38:23,010 Ist es nicht automatisch das tun? 774 00:38:23,010 --> 00:38:25,390 Warum müssen wir darüber Sorgen machen? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Oh, könnten Sie sagen, dass man mehr Zeit? 776 00:38:26,555 --> 00:38:29,510 >> ZIELGRUPPE: Mag nicht printf Puffer tun, die genau die gleiche Sache? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: Die printf Puffer? 778 00:38:31,280 --> 00:38:32,753 >> ZIELGRUPPE: Ja. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 War das nicht in einem der Tests waren sie reden, wie wenn Sie mit der rechten printf 781 00:38:40,609 --> 00:38:42,899 etwas, und dann haben sie eine Pause Sekunden, und dann können Sie es Schleife zehn haben 782 00:38:42,899 --> 00:38:46,530 mal, es wird 10 Sekunden warten und dann alles zusammen printf? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> ZIELGRUPPE: Ist es das Gleiche Sache, dann in diesem Fall? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Also war die Frage, grundsätzlich in einer der ehemaligen Quiz 786 00:38:52,630 --> 00:38:57,200 oder so etwas, es war eine Frage, die im Grunde, wenn Sie die Druck f 10 sagen 787 00:38:57,200 --> 00:39:01,490 Dinge, zu einer Zeit, und dann schlief wie in der Prozess der Druck denjenigen, 788 00:39:01,490 --> 00:39:04,850 am Ende aus irgendeinem Grund wäre es nur Dump die alle auf dem Bildschirm. 789 00:39:04,850 --> 00:39:06,740 Also gibt es zwei verschiedene Arten von Konzepte hier. 790 00:39:06,740 --> 00:39:10,400 >> Also ich denke, eine Sache ist, dass in diese Fall haben wir es mit zwei unterschiedlichen Umgang 791 00:39:10,400 --> 00:39:13,510 Art von Menschen fragen die Server für Dinge zur gleichen Zeit. 792 00:39:13,510 --> 00:39:17,455 Und der Grund, dass die Art von printf wartet, wie das und gibt sie alle aus 793 00:39:17,455 --> 00:39:21,760 auf einmal ist im Zusammenhang mit wie printf Art - 794 00:39:21,760 --> 00:39:25,100 so der Weg ist eigentlich printf implementiert ist es grundsätzlich 795 00:39:25,100 --> 00:39:28,850 sprechen Sie mit dem Betriebssystem zu schreiben das Zeug an die Konsole. 796 00:39:28,850 --> 00:39:33,460 So ist es nicht wollen, um all das zu tun Sachen sofort, wenn Sie sagen, printf 797 00:39:33,460 --> 00:39:36,260 eine Schnur, denn das könnte teuer werden, wenn es um 798 00:39:36,260 --> 00:39:37,340 tun, dass jedes Mal. 799 00:39:37,340 --> 00:39:41,530 >> Also, wenn Sie das tun printf hey, Ihr Programm eigentlich nicht so gedruckt, dass 800 00:39:41,530 --> 00:39:43,040 sofort an die Konsole. 801 00:39:43,040 --> 00:39:46,080 Es könnte sagen, OK, ich schrieb es. 802 00:39:46,080 --> 00:39:49,570 Und dann Art warten auf Sie zu geben es ein wenig mehr, bevor sie tatsächlich 803 00:39:49,570 --> 00:39:51,380 schreibe es auf der Konsole. 804 00:39:51,380 --> 00:39:54,040 >> Also der Grund, dass das der Fall war - 805 00:39:54,040 --> 00:39:56,450 und es ist nicht verwandten Art in den Schlaf - 806 00:39:56,450 --> 00:40:00,060 ist, dass der Schlaf war irgendwie nur dort injiziert, um zu zeigen das 807 00:40:00,060 --> 00:40:02,480 Tatsache, dass es nicht zu schreiben es synchron. 808 00:40:02,480 --> 00:40:06,210 Aber der Grund dafür ist einfach Leistung, so dass Sie nicht haben, 809 00:40:06,210 --> 00:40:08,920 machen, dass viele Kontakte zu das Betriebssystem. 810 00:40:08,920 --> 00:40:12,300 >> Aber hier, was wir wirklich versuchen, zu tun mit dieser Schlaf Sache ist nur Show 811 00:40:12,300 --> 00:40:17,730 dass, wenn wir zwei Menschen besuchen Diese Website, es wird nicht zu setzen 812 00:40:17,730 --> 00:40:22,310 sie in einer Linie, wo es geht zu sagen, Ich muss Ihnen zu helfen, und dann, wenn ich 813 00:40:22,310 --> 00:40:25,350 Ihnen hilft, nachdem diese völlig fertig fünf Sekunden und ich werde 814 00:40:25,350 --> 00:40:26,750 gehen Sie zum nächsten Person. 815 00:40:26,750 --> 00:40:29,515 So Anfrage der ersten Person nicht binden, dass die Ereignisschleife 816 00:40:29,515 --> 00:40:31,610 wenn das Sinn macht. 817 00:40:31,610 --> 00:40:34,980 >> Aber hier ist tatsächlich ein Beispiel von etwas, das binden wird 818 00:40:34,980 --> 00:40:36,090 bis der Ereignisschleife. 819 00:40:36,090 --> 00:40:39,130 Also hier ist eine schreckliche Funktion berechnen die n-te Fibonacci. 820 00:40:39,130 --> 00:40:43,510 Es ist buchstäblich die schlechtere Weise können Sie berechnen die n-te Fibonacci-Zahl. 821 00:40:43,510 --> 00:40:48,480 Und das ist eigentlich nur, um zu bestätigen, wenn dies aus, 822 00:40:48,480 --> 00:40:49,330 es gibt tatsächlich - 823 00:40:49,330 --> 00:40:53,230 Ich meine, können Sie versuchen zu gehen finden - aber es ist wie ein sehr langwieriger Blog 824 00:40:53,230 --> 00:40:54,130 schreiben, dass jemand geschrieben hat. 825 00:40:54,130 --> 00:40:55,660 Es ist wie eine jener Reddit Dinge. 826 00:40:55,660 --> 00:40:59,650 Aber jemand kritisiert Node.js und sie verwendet diese als Beispiel. 827 00:40:59,650 --> 00:41:03,700 Also habe ich wollte nur zeigen Ihnen zwei verschiedenen Perspektiven, nur um 828 00:41:03,700 --> 00:41:07,320 ein allgemeines Verständnis der Begriffe hinter diesen beiden Dingen. 829 00:41:07,320 --> 00:41:13,050 >> Dies ist aber nur als eine schreckliche gewählt, schrecklich ineffizient rechen 830 00:41:13,050 --> 00:41:15,940 intensiven Weg, um das zu berechnen n-te Fibonacci-Zahl. 831 00:41:15,940 --> 00:41:21,180 Also nur so nebenbei, warum ist es ist schrecklich, wie in einer Art und Weise? 832 00:41:21,180 --> 00:41:23,210 Yep? 833 00:41:23,210 --> 00:41:25,130 >> ZIELGRUPPE: Sagen Sie beginnen mit 1.000. 834 00:41:25,130 --> 00:41:27,050 1000 teilt sich in 999 und 998. 835 00:41:27,050 --> 00:41:28,970 Jeder der diese teilt sich in zwei Dingen. 836 00:41:28,970 --> 00:41:30,890 Jeder der diese teilt sich in zwei Dingen. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Richtig. 838 00:41:31,355 --> 00:41:32,400 >> ZIELGRUPPE: Alle nach unten. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Genau. 840 00:41:32,840 --> 00:41:37,330 Also nur für die Kamera zu wiederholen, wenn ich rufen fib auf wie 1000 oder etwas 841 00:41:37,330 --> 00:41:41,810 so ist es natürlich nicht weniger als oder gleich eins ist, so werde ich 842 00:41:41,810 --> 00:41:46,040 gehen Sie zu diesem Fall anders, und dann werde ich zu rufen fib 999 sowie 998 fib. 843 00:41:46,040 --> 00:41:50,290 Und dann so ziemlich alle, dass Arbeit, die 999 macht fib ist 844 00:41:50,290 --> 00:41:52,950 Art auf diesem Niveau. 845 00:41:52,950 --> 00:41:55,620 Wenn Sie unten gehen, ist es noch mehr redundante als das, aber wenn Sie nur 846 00:41:55,620 --> 00:42:01,390 denken Berechnung fib 998 bekommt uns ziemlich nah an 999 fib. 847 00:42:01,390 --> 00:42:05,860 Also sollten wir wirklich ein wenig mehr sein klug, wie wir irgendwie wiederverwenden 848 00:42:05,860 --> 00:42:07,580 diese, aber wir werden nicht wiederverwenden diese Sachen überhaupt. 849 00:42:07,580 --> 00:42:11,860 So können Sie sich vorstellen, dieses gigantische, riesigen Baum, der einfach nur schrecklich ist. 850 00:42:11,860 --> 00:42:12,940 >> Aber trotzdem, OK. 851 00:42:12,940 --> 00:42:14,040 Das war also fib. 852 00:42:14,040 --> 00:42:15,530 Es dauert nur eine Weile zu laufen. 853 00:42:15,530 --> 00:42:16,510 Yep? 854 00:42:16,510 --> 00:42:17,760 >> ZIELGRUPPE: [unverständlich]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Oh, könnten Sie die Frage wiederholen? 857 00:42:22,481 --> 00:42:23,731 >> ZIELGRUPPE: [unverständlich]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Ach so ist dies nur Code das wird sich auf die Art sein 860 00:42:33,990 --> 00:42:34,850 Server-Seite. 861 00:42:34,850 --> 00:42:38,100 Also das ist nicht zu finden im Browser oder nichts. 862 00:42:38,100 --> 00:42:42,160 Es ist im Grunde das, was wir haben, ist, dass, wenn der Benutzer hier ziemlich viel macht 863 00:42:42,160 --> 00:42:45,300 ihren Antrag wieder, wenn wir eine Art eine Anfrage, wir gehen zu rufen 864 00:42:45,300 --> 00:42:47,040 diese Funktion auf der Server-Seite. 865 00:42:47,040 --> 00:42:50,480 Und dann werden wir das Ergebnis zurück Aufruf von dieser Funktion. 866 00:42:50,480 --> 00:42:52,460 Und dann haben wir einfach ausdrucken werde es dem Benutzer. 867 00:42:52,460 --> 00:42:54,580 So kann der Anwender nicht wirklich umgehen mit dieser Funktion zu viel. 868 00:42:54,580 --> 00:42:57,270 >> War das die Frage? 869 00:42:57,270 --> 00:42:58,470 Heißt das Sinn? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Kühl. 872 00:43:00,930 --> 00:43:04,240 >> Also noch einmal, wir machen diese ganze res.writeHead Sache, wo wir drucken 873 00:43:04,240 --> 00:43:05,150 der Kopfzeile. 874 00:43:05,150 --> 00:43:09,730 Und dann habe ich am Ende die Antwort, indem Sie die magische Zahl 45 ist fib. 875 00:43:09,730 --> 00:43:12,100 Also lasst uns diesen Server laufen gerade. 876 00:43:12,100 --> 00:43:15,190 So werde ich zu einem Knoten fib.js. tun 877 00:43:15,190 --> 00:43:17,340 So, jetzt meine fib Server läuft. 878 00:43:17,340 --> 00:43:21,790 >> Und dann hier, ich werde , eins von diesen zu tun. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Also ich werde einfach sagen, Locke. 881 00:43:24,960 --> 00:43:32,226 Also, es wird eine Weile dauern, aber hoffentlich wird es bald zu beenden und 882 00:43:32,226 --> 00:43:35,660 es wird darauf hin, dass der 45. ausdrucken Fibonacci-Zahl. 883 00:43:35,660 --> 00:43:36,910 >> ZIELGRUPPE: [unverständlich]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: Es sollte ziemlich bald zu erledigen. 886 00:43:42,050 --> 00:43:43,780 So sollte es fünf vor sechs Sekunden dauern. 887 00:43:43,780 --> 00:43:48,570 Ich weiß nicht, das ist nur V8 wird super schnell, aber in jedem Fall ist dies ein 888 00:43:48,570 --> 00:43:52,700 sehr kurze Beispiel und absichtlich unelegant einer nicht-trivialen 889 00:43:52,700 --> 00:43:54,200 Berechnung. 890 00:43:54,200 --> 00:43:56,700 So nach einer Weile, erhält es diese. 891 00:43:56,700 --> 00:44:02,130 >> Aber jetzt, was ist, wenn ich das gleiche Art von Experiment vor, wo ich 892 00:44:02,130 --> 00:44:04,010 zwei Anträge zur gleichen Zeit? 893 00:44:04,010 --> 00:44:06,990 So, hier bin ich zu einer Locke los die Adresse, und ich werde 894 00:44:06,990 --> 00:44:08,260 eine andere Locken zu tun. 895 00:44:08,260 --> 00:44:12,070 Und denken Sie daran, wenn wir tat dies für die Schlaf-Server, als wir es im Grunde 896 00:44:12,070 --> 00:44:15,320 nach fünf Sekunden, sie sind ziemlich viel kamen beide hinten rechts 897 00:44:15,320 --> 00:44:16,380 Etwa zur gleichen Zeit. 898 00:44:16,380 --> 00:44:18,650 So war es nicht besonders gefesselt. 899 00:44:18,650 --> 00:44:20,290 >> Aber versuchen wir es jetzt. 900 00:44:20,290 --> 00:44:22,370 OK, so haben wir unsere beiden Prozessen. 901 00:44:22,370 --> 00:44:24,210 Denken Sie daran, das sind die Prozess-IDs. 902 00:44:24,210 --> 00:44:25,900 Das wird ein wenig unbeholfen, während wir abgewürgt. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Also lassen Sie uns einfach hier bleiben und warten. 905 00:44:35,360 --> 00:44:37,090 >> Also einer von ihnen zu kommen, sollte zurück nach wie - 906 00:44:37,090 --> 00:44:39,190 OK, so kam zurück. 907 00:44:39,190 --> 00:44:43,570 Aber warum dann nicht die zweite man nur noch zurückkommen? 908 00:44:43,570 --> 00:44:44,389 Yep? 909 00:44:44,389 --> 00:44:49,280 >> ZIELGRUPPE: Der Server kann nichts tun während es die Berechnung, dass große Nummer. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Richtig. 911 00:44:51,620 --> 00:44:55,395 Also die Antwort war nur, dass der Server wirklich nichts zu tun, während 912 00:44:55,395 --> 00:44:57,460 es ist die Berechnung, dass die Fibonacci-Zahl. 913 00:44:57,460 --> 00:44:59,360 So jetzt habe ich gerade meine zwei Dinge zurück. 914 00:44:59,360 --> 00:45:03,210 Aber ich denke, nur über den Code denken ein wenig mehr, wie es funktioniert 915 00:45:03,210 --> 00:45:05,030 und alles. 916 00:45:05,030 --> 00:45:11,750 >> Also diese Funktion hier ist der Code, Ich habe diesen Server sagte zu laufen, wenn es 917 00:45:11,750 --> 00:45:14,100 erhält eine neue eingehende Anfrage. 918 00:45:14,100 --> 00:45:17,940 So ist es nur geht, um durch diese laufen gesamte Code, und es wird gehen 919 00:45:17,940 --> 00:45:21,120 auf die Ereignisschleife zurück und dann weiter Überprüfung auf neue Ereignisse. 920 00:45:21,120 --> 00:45:23,670 Also im Grunde das, was wir haben, passiert ist der Server 921 00:45:23,670 --> 00:45:25,080 Hören für neue Dinge. 922 00:45:25,080 --> 00:45:28,070 Die erste Person, fragt nach, was 45 ist. 923 00:45:28,070 --> 00:45:30,490 Wir führen diesen Code, um es zu berechnen. 924 00:45:30,490 --> 00:45:33,420 Dieser Code dauert etwa fünf bis sechs Sekunden zu laufen. 925 00:45:33,420 --> 00:45:36,990 Dann gehen wir zurück in die Ereignisschleife und überprüfen Sie für neue Anforderungen. 926 00:45:36,990 --> 00:45:42,700 >> Also das ist ein Beispiel, wie, wenn Sie haben Dinge, die so genannte Rechen sind 927 00:45:42,700 --> 00:45:48,140 gebunden ist, oder verwenden Sie eine Menge Rechen, nicht die Macht, aber wie sind 928 00:45:48,140 --> 00:45:50,260 rechenintensive - 929 00:45:50,260 --> 00:45:54,080 Ich denke, eine Sache, darüber zu sagen ist dass diese Funktion vollständig zu tun, 930 00:45:54,080 --> 00:45:56,310 zum größten Teil, recht nützliche Arbeit Recht. 931 00:45:56,310 --> 00:45:59,970 Die ganze Zeit, dass die Rückruf Funktion ausgeführt wurde, es war ziemlich 932 00:45:59,970 --> 00:46:03,670 viel die meiste Zeit die Ausgaben nur Computing, die n-te Fibonacci-Zahl. 933 00:46:03,670 --> 00:46:05,930 >> Aber wir hatten nur ein Thread zu behandeln. 934 00:46:05,930 --> 00:46:10,270 In der Apache-Modell, wenn zwei Menschen den Antrag zu bekommen fib 45, wir 935 00:46:10,270 --> 00:46:11,610 würden zwei verschiedene Themen haben. 936 00:46:11,610 --> 00:46:15,060 Und dann Aufgabe des Betriebssystems gewesen wäre, oder der Benutzer-Ebene 937 00:46:15,060 --> 00:46:18,660 Code, der die Fäden verwaltet, haben würde gewesen, dass die Scheibe auf die 938 00:46:18,660 --> 00:46:23,060 CPU, oder auch wenn Sie mehrere CPUs hatte, verteilen sie über den CPUs 939 00:46:23,060 --> 00:46:26,130 so, dass sie beide waren Finish etwa zur gleichen Zeit. 940 00:46:26,130 --> 00:46:31,120 >> Also nur um zu zeigen, wie wir von sortieren - und dies ist nicht eine perfekte Gesamt 941 00:46:31,120 --> 00:46:34,280 Lösung, aber eine Art, wie wir können, machen einen wieder hierher kommen und tun, 942 00:46:34,280 --> 00:46:35,880 ein bisschen besser. 943 00:46:35,880 --> 00:46:41,540 Also, was ich hier habe, ist ein Programm namens Fib C. Und das im Grunde verwendet 944 00:46:41,540 --> 00:46:45,690 ein weiterer von Node-Module genannt Das Kind Vorgehensbaustein. 945 00:46:45,690 --> 00:46:49,210 Also habe ich aufgenommen, dass an der Spitze Art der wie ich ein Pfund zu tun sind 946 00:46:49,210 --> 00:46:51,230 Kind process.h oder so etwas. 947 00:46:51,230 --> 00:46:56,210 Jetzt habe ich Zugang zu diesem CP variable die hat alle meine Funktionalität. 948 00:46:56,210 --> 00:47:01,810 >> So, jetzt, was ich in dieser Antwort tun Handler ist Ich bin mit diesem Programm 949 00:47:01,810 --> 00:47:04,100 Slash Dot fib 45. 950 00:47:04,100 --> 00:47:06,820 Also, was ich getan habe - und ich werde einfach aus diesem Programm für einen Schritt 951 00:47:06,820 --> 00:47:07,620 wenig - 952 00:47:07,620 --> 00:47:11,060 wird Ich habe ein C-Programm geschrieben, dass Grundsätzlich berechnet der 953 00:47:11,060 --> 00:47:12,630 n-te Fibonacci-Zahl. 954 00:47:12,630 --> 00:47:15,960 So, hier ist nur ein Programm, das ich geschrieben habe in C, die dies berechnet. 955 00:47:15,960 --> 00:47:19,040 Ich kann es zu kompilieren, und ich laufen kann es in der Befehlszeile. 956 00:47:19,040 --> 00:47:22,150 Und es wird zur Berechnung der 45. Fibonacci-Zahl. 957 00:47:22,150 --> 00:47:24,510 >> So merkt es dauert nur ziemlich viel, wie lange. 958 00:47:24,510 --> 00:47:28,240 Ich könnte wahrscheinlich Strich 03 verwendet haben optimieren oder so etwas, 959 00:47:28,240 --> 00:47:31,050 aber ich tat wie normale Compilereinstellungen. 960 00:47:31,050 --> 00:47:33,260 Und er druckt es aus. 961 00:47:33,260 --> 00:47:36,830 >> Aber jetzt, was soll ich tun Art? 962 00:47:36,830 --> 00:47:39,800 Oh sorry, falsche Datei. 963 00:47:39,800 --> 00:47:42,800 Also habe ich die gleichen Sachen zu tun der Header wie zuvor. 964 00:47:42,800 --> 00:47:45,780 Dann mache ich dieses cp.exec. 965 00:47:45,780 --> 00:47:49,460 Also, was ist zu tun ist, es ist gehen, um dieses Programm auszuführen. 966 00:47:49,460 --> 00:47:51,960 Aber das funktioniert so, dass es wird nicht zu warten 967 00:47:51,960 --> 00:47:53,400 das Programm zu beenden. 968 00:47:53,400 --> 00:47:56,000 Er sagt im Grunde nur dieses Programm ausführen. 969 00:47:56,000 --> 00:47:58,700 Also im Grunde geben diese in die Eingabeaufforderung Art. 970 00:47:58,700 --> 00:48:02,350 >> Und dann, wenn Sie mit getan es, führen Sie diese Funktion. 971 00:48:02,350 --> 00:48:04,800 So, jetzt haben wir eine Art, an diese ganze Sache wieder von 972 00:48:04,800 --> 00:48:06,750 wie wir nicht warten. 973 00:48:06,750 --> 00:48:08,530 Hat diese Art von Sinn? 974 00:48:08,530 --> 00:48:08,990 Yep? 975 00:48:08,990 --> 00:48:11,060 >> ZIELGRUPPE: [unverständlich]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Also das wird tatsächlich öffnen, ein neues Verfahren zu tun. 977 00:48:13,610 --> 00:48:19,310 Also das ist eigentlich, in gewisser Weise, Böse, Böse nicht super, aber es ist 978 00:48:19,310 --> 00:48:22,990 wichtig zu sagen, dass diese Art von geht zurück auf, auf der einen Seite, die Apache 979 00:48:22,990 --> 00:48:26,450 Modell, wo wir tun Threads und Prozesse für jede Anforderung oder 980 00:48:26,450 --> 00:48:29,280 Prozesse für jede Anforderung. 981 00:48:29,280 --> 00:48:32,090 Also das ist eine Art, analog zu dem, was Apache tut. 982 00:48:32,090 --> 00:48:35,110 In einigen Fällen wird es nur mit einem neuen Gewinde, die ein wenig mehr Licht 983 00:48:35,110 --> 00:48:39,040 Gewicht als ein Prozess, aber Apache konnte Gabelung am Ende einen neuen Prozess 984 00:48:39,040 --> 00:48:43,370 welche Art von dem, was wir hier tun, ist implizit, indem Sie Punkt Strich fib 45. 985 00:48:43,370 --> 00:48:48,690 >> Und dann in diesem Fall, wir Art entstehen die gleichen Kosten von Prozessen. 986 00:48:48,690 --> 00:48:50,710 Also das ist nur eine Sache, die Sie tun können. 987 00:48:50,710 --> 00:48:52,600 Aber gerade diese Art von Lauf zeigen. 988 00:48:52,600 --> 00:48:57,120 Und diese Diskussion ist einfach richtig angestrebt präsentiert diese Art von Programmen als 989 00:48:57,120 --> 00:49:00,710 Weg, um verschiedene Perspektiven zu zeigen wie sie Server so zu entwerfen. 990 00:49:00,710 --> 00:49:08,300 Also das läuft, und dann, wenn ich jetzt tun diese wieder, bekam ich zwei Prozess-IDs. 991 00:49:08,300 --> 00:49:10,320 >> Lassen Sie uns einfach darüber zu sprechen Dinge, darauf hinzuweisen. 992 00:49:10,320 --> 00:49:11,980 So fest, dass sie schrittweise. 993 00:49:11,980 --> 00:49:12,700 Das ist cool. 994 00:49:12,700 --> 00:49:15,140 Denn es war vor 27.122. 995 00:49:15,140 --> 00:49:18,580 Aber jetzt Ankündigung, kamen sie zurück ungefähr zur gleichen Zeit. 996 00:49:18,580 --> 00:49:23,960 >> Und jetzt, eine gute Frage, über fragen warum war das der Fall ist, deren Aufgabe 997 00:49:23,960 --> 00:49:27,590 war es nun, diese Dinge irgendwie machen Art fair mit jedem 998 00:49:27,590 --> 00:49:31,350 anderen, diese beiden Instanzen dot Strich fib 45, die ich lief 999 00:49:31,350 --> 00:49:32,880 oder die Node ran? 1000 00:49:32,880 --> 00:49:36,940 Wer irgendwie macht es fair, dass sie beide bekommen Art von Laufzeit ausgeglichen? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> ZIELGRUPPE: [unverständlich]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Ja. 1004 00:49:44,620 --> 00:49:49,740 Also im Grunde, wenn ich Punkt Strich fib 45 oder so, jetzt ist es 1005 00:49:49,740 --> 00:49:53,750 Art bis zum Betriebssystem Griff der Laufzeit dieser Programme. 1006 00:49:53,750 --> 00:49:56,920 Und jetzt kann es ihnen planen auf verschiedenen CPUs oder es 1007 00:49:56,920 --> 00:49:58,330 können sie planen. 1008 00:49:58,330 --> 00:50:01,870 Es kann, dass man in Scheiben schneiden die Zeit CPU bekommt oder dass sie es bekommen 1009 00:50:01,870 --> 00:50:03,330 auf einer CPU laufen. 1010 00:50:03,330 --> 00:50:05,620 Also das ist die Idee dahinter. 1011 00:50:05,620 --> 00:50:07,220 Heißt das Sinn machen, alle? 1012 00:50:07,220 --> 00:50:10,950 So, jetzt Node ist nicht wirklich spielen eine Teil bei der Aufteilung dieser Aufgaben. 1013 00:50:10,950 --> 00:50:12,200 OK. 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> Also das ist es fast für Beispiele. 1016 00:50:17,840 --> 00:50:23,370 Ich wollte nur noch eins zeigen weil eine Menge von dieser war bisher 1017 00:50:23,370 --> 00:50:27,350 nicht total super praktisch in einigen Fällen. 1018 00:50:27,350 --> 00:50:30,970 Ich kann mir vorstellen, nachdem diese nach Hause zu kommen zu sprechen und etwas zu sagen, und wie, 1019 00:50:30,970 --> 00:50:35,710 auch ich irgendwie bekam aus diesem Gespräch, das Ich kann eine Fibonacci-Server für machen 1020 00:50:35,710 --> 00:50:37,360 mein letztes Projekt. 1021 00:50:37,360 --> 00:50:40,770 Also hier ist einfach irgendwie noch ein Beispiel die hoffentlich sein - 1022 00:50:40,770 --> 00:50:44,620 vielleicht auch nicht, aber vielleicht - ein wenig mehr Art relevant für Abschlussarbeiten und 1023 00:50:44,620 --> 00:50:46,440 Vorausdenken für solche Dinge. 1024 00:50:46,440 --> 00:50:48,870 >> Also das ist chat.js. 1025 00:50:48,870 --> 00:50:52,290 Also das ist eine Art einige Beispiel mag Server-seitigen Code, den Sie verwenden könnten 1026 00:50:52,290 --> 00:50:55,700 sich mit einem kleinen Chat-Server wie Sie können auf die gesehen haben 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat oder was auch immer. 1028 00:50:56,630 --> 00:50:59,990 Also ich sage nicht, das ist wie Facebook Chat, aber das ist eine Art 1029 00:50:59,990 --> 00:51:06,230 wie eine gute - vielleicht nicht gut, aber vielleicht gut - Ausgangspunkt für ein Gespräch 1030 00:51:06,230 --> 00:51:08,560 Server für Ihre Website für eine endgültige Projekt. 1031 00:51:08,560 --> 00:51:11,040 Also schauen wir uns an, was es tut. 1032 00:51:11,040 --> 00:51:15,500 >> Also sind wir immer diese besondere Sache an der Spitze, hat diese VaR SIO 1033 00:51:15,500 --> 00:51:17,050 gleich Socket.IO erfordern. 1034 00:51:17,050 --> 00:51:20,280 Also das ist eine andere Sache, es funktioniert nicht tatsächlich kommen mit gebündelten 1035 00:51:20,280 --> 00:51:22,300 Knoten, aber Sie können es zu installieren. 1036 00:51:22,300 --> 00:51:23,480 Es ist ein Node-Modul. 1037 00:51:23,480 --> 00:51:25,670 So ist es nur, wie einige Erweiterung Knoten. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO ist eigentlich wirklich irgendwie cool. 1039 00:51:29,220 --> 00:51:32,550 Es ist eine Abstraktion, die im Grunde, was es tut, ist es erlaubt Ihnen, 1040 00:51:32,550 --> 00:51:35,770 haben diesen Strom der Kommunikation zwischen einem Web 1041 00:51:35,770 --> 00:51:39,430 Browser und Web-Server. 1042 00:51:39,430 --> 00:51:45,250 Also zum größten Teil so weit, wir hatten diese sehr schnell eine Sekunde oder zwei 1043 00:51:45,250 --> 00:51:48,790 zweite Kommunikation zwischen einem Web Browser und Web-Server. 1044 00:51:48,790 --> 00:51:53,310 Also ist es im Grunde zu google.com, get gehen das Zeug, schicken Sie es zurück und dann 1045 00:51:53,310 --> 00:51:53,770 wir fertig sind. 1046 00:51:53,770 --> 00:51:56,560 Wir werden nie wieder zu sprechen, bis die Benutzertypen in etwas anderes. 1047 00:51:56,560 --> 00:52:01,090 >> Aber was Socket.IO und ähnliche Art von Dinge - und ist eigentlich ein SocketIO 1048 00:52:01,090 --> 00:52:03,940 der Dinge, die auf so gebaut wird WebSocket das ist eine Art der verfügbaren 1049 00:52:03,940 --> 00:52:06,440 als Teil der HTML5 - 1050 00:52:06,440 --> 00:52:09,620 , mit dem Sie dies Fortsetzung des Dialogs. 1051 00:52:09,620 --> 00:52:13,990 Und das ist sehr nützlich in einem Chat-Server Art der Sache, denn es ist 1052 00:52:13,990 --> 00:52:17,390 wie eine Art von Fortsetzung des Dialogs in einige Möglichkeiten, denn wenn Sie chatten 1053 00:52:17,390 --> 00:52:21,540 mit jemandem, können Sie jetzt einfach senden Nachricht auf der Leitung, und dann die 1054 00:52:21,540 --> 00:52:23,940 Server kann eine Nachricht senden die unten Rohr auf die andere Person, die Sie sind 1055 00:52:23,940 --> 00:52:24,520 Chat mit. 1056 00:52:24,520 --> 00:52:26,903 Und dann können Sie dies haben Austausch so. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Also das ist irgendwie was SocketIO gut ist. 1059 00:52:32,850 --> 00:52:38,400 Der Grund, dass SocketIO verwendet WebSockets wie eine Sache ist, dass in 1060 00:52:38,400 --> 00:52:43,980 Neben einfach nur alte WebSockets, es tut auch ein paar Tricks, um im Grunde 1061 00:52:43,980 --> 00:52:45,610 machen es Browser kompatibel. 1062 00:52:45,610 --> 00:52:50,040 So Browsern wie Internet Explorer leider nicht WebSockets unterstützen 1063 00:52:50,040 --> 00:52:50,810 direkt aus der Box. 1064 00:52:50,810 --> 00:52:55,290 So verwendet sie eine andere Art von kühlen ordentlich Dinge mit Adobe Flash, damit 1065 00:52:55,290 --> 00:52:57,170 Sie Cross-Browser-Unterstützung haben. 1066 00:52:57,170 --> 00:52:58,800 Also das ist wirklich nützlich. 1067 00:52:58,800 --> 00:53:02,440 >> Und tatsächlich, ich weiß, ich bin eine Art die auf Zeit hier, aber CS50 1068 00:53:02,440 --> 00:53:08,490 Besprechen Sie, haben Sie jemals etwas gesehen wie, weiß ich nicht, so und so ist leer 1069 00:53:08,490 --> 00:53:11,030 Antworten zu diesem Beitrag oder etwas so, dass die Funktion? 1070 00:53:11,030 --> 00:53:12,250 Das ist SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Also, wenn jemand beginnt der Eingabe in die diskutieren Feld, um eine Antwort zu machen oder 1072 00:53:15,580 --> 00:53:20,040 etwas, was nicht Ihrem Browser in SocketIO genannt strahlt eine Art von 1073 00:53:20,040 --> 00:53:22,660 Fall, dass jemand sagt, ist Antworten zu diesem Beitrag. 1074 00:53:22,660 --> 00:53:26,110 >> Dann sagt der Server, OK, was muss ich tun? 1075 00:53:26,110 --> 00:53:29,270 Nun, jetzt habe ich die anderen Jungs sagen die auf CS50 sind Diskutieren suchen 1076 00:53:29,270 --> 00:53:31,170 auf diesem Posten ist, dass jemand antwortete. 1077 00:53:31,170 --> 00:53:34,190 Also das ist irgendwie was ist SocketIO gut für die, diese Art von Weiterbildung 1078 00:53:34,190 --> 00:53:35,930 Strom des Dialogs. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Also, was ich hier habe - und wir gerade sind gehen, um die Verbindungen Array ignorieren 1081 00:53:40,060 --> 00:53:41,390 für ein wenig - 1082 00:53:41,390 --> 00:53:43,080 was ich tue, ist, dass ich eine andere zu hören. 1083 00:53:43,080 --> 00:53:46,880 Also das ist nur die Art und Weise ist Socket.IO sagen wir auf diesem Port zu hören. 1084 00:53:46,880 --> 00:53:50,060 Und dann werde ich dies tun auf der Verbindung. 1085 00:53:50,060 --> 00:53:53,360 Also das ist im Grunde nur die Socket-IO- Art zu sagen, wenn wir erhalten eine 1086 00:53:53,360 --> 00:53:55,840 Verbindung, ich will dich um diesen Code ausführen. 1087 00:53:55,840 --> 00:53:59,870 >> Und feststellen, dass anstatt rec res und dort übergeben habe ich Sockel. 1088 00:53:59,870 --> 00:54:03,260 Und dieser Sockel Idee ist im Grunde diese Sache, die Sie schreiben und lesen 1089 00:54:03,260 --> 00:54:05,750 aus, dass den Benutzer- Nachrichten möglich. 1090 00:54:05,750 --> 00:54:10,700 Und die Nachrichten, die Sie senden möchten kann durch diesen Sockel zu gehen. 1091 00:54:10,700 --> 00:54:12,140 Heißt das Sinn? 1092 00:54:12,140 --> 00:54:14,490 So ist es der anhaltende Sache. 1093 00:54:14,490 --> 00:54:17,820 >> Also, was ich zu tun ist, ich nenne Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 Und emittieren dauert ziemlich viel zwei Argumente. 1095 00:54:20,330 --> 00:54:24,100 Das erste Argument ist ein String nur der den Typ des 1096 00:54:24,100 --> 00:54:25,270 was Sie emittierenden sind. 1097 00:54:25,270 --> 00:54:28,120 Also für diesen Fall habe ich den Einsatz Diese Saite neuen Nachricht. 1098 00:54:28,120 --> 00:54:32,670 Und das ist im Grunde nur sagen, dass der Typ dieses Ding, was ich bin 1099 00:54:32,670 --> 00:54:34,750 Senden, eine neue Nachricht. 1100 00:54:34,750 --> 00:54:38,460 So können Sie für bestimmte Arten hören kann wie neue Nachricht oder was auch immer 1101 00:54:38,460 --> 00:54:39,960 mithilfe Punkt auf. 1102 00:54:39,960 --> 00:54:44,570 >> Also schickte Anschluss-und Benutzer es, wenn Sie schauen, wo wir auf Punkt nennen, 1103 00:54:44,570 --> 00:54:48,150 das sind die anderen Saiten, die darstellen, Arten von Benutzernachrichten. 1104 00:54:48,150 --> 00:54:52,060 So ist es im Grunde kann man diese abstrahlen eine dieser Nachrichtentypen und 1105 00:54:52,060 --> 00:54:55,520 dann etwas zu tun, als Reaktion auf eine dieser Nachrichtentypen 1106 00:54:55,520 --> 00:54:57,640 >> Also ich bin emittierende diese neue Nachricht. 1107 00:54:57,640 --> 00:55:00,540 Wir werden connections.push ignorieren für eine Sekunde. 1108 00:55:00,540 --> 00:55:03,360 Aber dann sage ich, Socket.on Benutzer gesendet werden. 1109 00:55:03,360 --> 00:55:07,540 So, jetzt ist es irgendwie gerne, wenn die Benutzer sendet mir eine Nachricht, ich will 1110 00:55:07,540 --> 00:55:09,240 Sie diesen Code ausführen. 1111 00:55:09,240 --> 00:55:12,080 Und feststellen, dass die anonyme Funktion nimmt in dieser Variablen 1112 00:55:12,080 --> 00:55:16,300 Daten, die genannt wird, im Grunde geht die Botschaft des Benutzers haben. 1113 00:55:16,300 --> 00:55:20,700 >> So, jetzt lassen die Art der Diskussion über die Verbindungen Array. 1114 00:55:20,700 --> 00:55:24,590 Also das ist für einen Chat-Client entwickelt, wo im Grunde jeder ist irgendwie in 1115 00:55:24,590 --> 00:55:25,950 das gleiche Chat-Raum. 1116 00:55:25,950 --> 00:55:29,640 Also im Grunde das, was wir brauchen, um um einige Array, das im Grunde 1117 00:55:29,640 --> 00:55:33,170 stellt alle Leute im Chat in einige Möglichkeiten, wenn das Sinn macht. 1118 00:55:33,170 --> 00:55:33,340 Right? 1119 00:55:33,340 --> 00:55:37,190 Da müssen wir, die diese Jungs wissen, so können wir ihnen die Nachrichten zu senden 1120 00:55:37,190 --> 00:55:39,140 dass andere Menschen an uns senden. 1121 00:55:39,140 --> 00:55:44,440 >> Also, was dieser Code tut, ist, wenn der Benutzer sendet eine Nachricht - das ist die Art von 1122 00:55:44,440 --> 00:55:45,300 die Veranstaltung - 1123 00:55:45,300 --> 00:55:47,120 wir werden diesen Code ausführen. 1124 00:55:47,120 --> 00:55:51,240 Und was wir tun, ist, dass wir durch diese laufen Array, das haben wir Verbindungen genannt. 1125 00:55:51,240 --> 00:55:54,390 Und so ziemlich für jede Verbindung außer der, die unsere ist, das ist 1126 00:55:54,390 --> 00:55:59,520 was dieser Code sagt, senden wir ein neues Nachricht mit dem angefügten Nachricht 1127 00:55:59,520 --> 00:56:01,210 Informationen. 1128 00:56:01,210 --> 00:56:04,880 >> Also, wenn Sie hier bemerken, was ich tat, als der Benutzer tatsächlich macht eine neue 1129 00:56:04,880 --> 00:56:08,560 Verbindung, die ich mit der Mehr JavaScript.push Verfahren ist dies 1130 00:56:08,560 --> 00:56:12,100 im Grunde nur sagen, wie hinzufügen Sockel, dass als Wert in 1131 00:56:12,100 --> 00:56:13,900 unsere Verbindungen Array. 1132 00:56:13,900 --> 00:56:20,560 So, jetzt, wenn dieser Code ausgeführt wird, wird es Dinge schicken, um diesen besonderen 1133 00:56:20,560 --> 00:56:22,020 Verbindungen. 1134 00:56:22,020 --> 00:56:26,980 So kann dies ein guter Ausgangspunkt sein für die Herstellung einer Chat-Server 1135 00:56:26,980 --> 00:56:28,250 oder etwas ähnliches. 1136 00:56:28,250 --> 00:56:33,315 >> Und das irgendwie cool ist, dass die Code, den Sie hier sehen, wie für ein-und 1137 00:56:33,315 --> 00:56:36,390 emittieren und so was ist der gleiche Art von JavaScript-Code, die Sie 1138 00:56:36,390 --> 00:56:39,260 schreiben im Browser zu interagieren mit dem Server. 1139 00:56:39,260 --> 00:56:42,480 Also, warum ist eine Art SocketIO ordentlich und sinnvoll auf diese Weise. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> Oh, und nur noch eine Sache ganz schnell. 1142 00:56:49,250 --> 00:56:55,970 Es war ein Abschlussprojekt CS50 letzten Jahr dass im Grunde ein Chat implementiert 1143 00:56:55,970 --> 00:56:57,840 Server in Node.js. 1144 00:56:57,840 --> 00:57:01,350 Ich denke, es ist Harvardchats.org aber ich bin nicht - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Ich bin mir nicht sicher, was die URL, aber Das kann ich aus später zu senden. 1147 00:57:06,190 --> 00:57:09,260 Aber es ist irgendwie cool, was Sie Node.js. tun können 1148 00:57:09,260 --> 00:57:14,680 >> So hoffe ich, in der Regel haben euch ein guten Sinn für das, was ist sinnvoll, Node.js 1149 00:57:14,680 --> 00:57:17,870 und wie könnte man vielleicht anwenden um Ihre endgültige Projekt. 1150 00:57:17,870 --> 00:57:21,050 Ich werde aussenden etwas mehr Mittel zusammen mit diesem. 1151 00:57:21,050 --> 00:57:23,170 Und ich danke Ihnen für Ihr Kommen. 1152 00:57:23,170 --> 00:57:23,610 Danke. 1153 00:57:23,610 --> 00:57:27,168 >> [Applaus]