1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVIN SCHMID: Witam wszystkich. 3 00:00:09,710 --> 00:00:12,640 Witamy w seminarium CS50 na Node.js. 4 00:00:12,640 --> 00:00:13,955 Nazywam się Kevin. 5 00:00:13,955 --> 00:00:15,580 Jestem TF CS50. 6 00:00:15,580 --> 00:00:17,650 A ja jestem trochę jak bardzo podekscytowany o seminarium. 7 00:00:17,650 --> 00:00:20,430 Myślę Node.js jest bardzo fajne. 8 00:00:20,430 --> 00:00:24,200 Mam nadzieję, że to seminarium może być używany jako dobry, myślę, trampolina do 9 00:00:24,200 --> 00:00:26,380 niektóre z ostatnich projektów, jeśli jesteś zainteresowany wykorzystaniem 10 00:00:26,380 --> 00:00:27,630 coś Node.js. 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> Będziemy jakby zacząć się od seminarium tylko o odrobinie 13 00:00:33,320 --> 00:00:36,970 rodzaj tła skalowalność perspektywy Node.js, a następnie 14 00:00:36,970 --> 00:00:39,240 my przejść do niektórych przykładów kodu. 15 00:00:39,240 --> 00:00:42,340 A ja mam kod na stronie internetowej, i można spojrzeć na kod. 16 00:00:42,340 --> 00:00:45,475 I po seminarium, Zajmę się mówi o tym, jak można skonfigurować Node.js 17 00:00:45,475 --> 00:00:48,220 na komputerze. 18 00:00:48,220 --> 00:00:48,710 >> OK. 19 00:00:48,710 --> 00:00:49,760 Więc zaczynajmy. 20 00:00:49,760 --> 00:00:53,700 Więc myślę, że po prostu chcę mówić o serwery WWW, naprawdę, pierwszy. 21 00:00:53,700 --> 00:00:59,730 I do początku tej dyskusji, ja w zasadzie ma schemat, który jest od 22 00:00:59,730 --> 00:01:04,269 podręcznik wykorzystywany do CS61, które Równanie to pokazuje oddziaływanie 23 00:01:04,269 --> 00:01:08,510 pomiędzy procesem klienta, jak Twój internetowy przeglądarki lub jak klienta celem lub 24 00:01:08,510 --> 00:01:11,340 coś w tym stylu, a serwer WWW. 25 00:01:11,340 --> 00:01:15,150 Tak więc tego rodzaju wygląda podobnie do obraz, który widział w wykładzie na 26 00:01:15,150 --> 00:01:19,270 Środa, gdzie w zasadzie mamy kilka proces klienta jak Google Chrome. 27 00:01:19,270 --> 00:01:22,980 >> A następnie jest krok pierwszy Klient wysyła żądanie. 28 00:01:22,980 --> 00:01:27,510 Tak, że może być coś Dobrze niech odwiedzić, nie wiem, CS50.net. 29 00:01:27,510 --> 00:01:29,320 Więc wydawać, że wniosek. 30 00:01:29,320 --> 00:01:34,280 I czy ktoś pamięta nazwę protokół, który określa, w jaki sposób 31 00:01:34,280 --> 00:01:35,610 Żądanie powinno być zorganizowane? 32 00:01:35,610 --> 00:01:36,382 Tak. 33 00:01:36,382 --> 00:01:37,650 >> PUBLICZNOŚCI: [niesłyszalne]. 34 00:01:37,650 --> 00:01:38,150 >> KEVIN SCHMID: Dokładnie. 35 00:01:38,150 --> 00:01:40,100 Tak to jest jak HTTP, prawda? 36 00:01:40,100 --> 00:01:44,720 Więc w zasadzie specyfikacji, jak , że wniosek powinien być właściwie określone 37 00:01:44,720 --> 00:01:47,450 na zewnątrz, ponieważ w końcu dnia że wniosek jest naprawdę tak jak 38 00:01:47,450 --> 00:01:50,240 Ciąg, który w zasadzie mówi, że chce tego. 39 00:01:50,240 --> 00:01:53,580 I specyfikacja o czyli HTTP. 40 00:01:53,580 --> 00:01:55,270 Tak, jak to jest protokół. 41 00:01:55,270 --> 00:01:57,920 >> Tak więc serwer odbiera że wniosek. 42 00:01:57,920 --> 00:02:01,610 Więc macie zainstalowany serwer WWW w urządzeniu CS50. 43 00:02:01,610 --> 00:02:02,460 To Apache. 44 00:02:02,460 --> 00:02:06,230 A w tym tygodniu, kiedy pracujesz na problemie ustawić siedem, będziesz faktycznie działa 45 00:02:06,230 --> 00:02:08,160 z tego serwera. 46 00:02:08,160 --> 00:02:12,380 Więc serwer otrzyma ten wniosek, a to musi rodzaju zarysowania jego 47 00:02:12,380 --> 00:02:15,090 głowy i powiedzieć, jak dobrze, co mogę z tym zrobić? 48 00:02:15,090 --> 00:02:20,060 >> Tak więc na podstawie tego, co zdecyduje się zrobić, a następnie może się skontaktować z jakąś 49 00:02:20,060 --> 00:02:20,730 zasobów. 50 00:02:20,730 --> 00:02:23,700 I tak może być zasobem Wiele różnych rzeczy. 51 00:02:23,700 --> 00:02:26,810 Z jednej strony, może ona być po prostu jak statycznego pliku HTML. 52 00:02:26,810 --> 00:02:29,820 Więc może to być po prostu jak niektórzy HTML, który jest jak na 53 00:02:29,820 --> 00:02:31,100 Twoja strona www. 54 00:02:31,100 --> 00:02:35,360 Może to być plik obrazu statycznego jak lub jak w filmie, że masz. 55 00:02:35,360 --> 00:02:37,660 To może nawet porozmawiać do pewnego rodzaju baza danych 56 00:02:37,660 --> 00:02:39,530 jak bazy danych MySQL. 57 00:02:39,530 --> 00:02:43,910 Więc nie zawsze mają się komunikować z zasobem, ale 58 00:02:43,910 --> 00:02:45,700 W niektórych przypadkach, to może. 59 00:02:45,700 --> 00:02:47,800 >> Tak więc to, co zamierza zrobić po to jest to będzie 60 00:02:47,800 --> 00:02:49,430 odesłać odpowiedź. 61 00:02:49,430 --> 00:02:53,130 I odpowiedź na to również określone przez HTTP. 62 00:02:53,130 --> 00:02:54,830 Tak więc klient może go otrzymać. 63 00:02:54,830 --> 00:02:56,740 Można go oderwać od siebie i przetwarza je. 64 00:02:56,740 --> 00:03:00,900 A następnie dostać się do strony internetowej jak Google lub CS50.net lub 65 00:03:00,900 --> 00:03:02,240 cokolwiek poszedł. 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> Tak to jest, że podstawowa interakcja będziemy się zajmować. 68 00:03:06,080 --> 00:03:08,770 I jesteśmy dość dużo będzie koncentrując się na tej części 69 00:03:08,770 --> 00:03:10,640 interakcji z serwerem. 70 00:03:10,640 --> 00:03:10,990 OK. 71 00:03:10,990 --> 00:03:12,210 Fajne. 72 00:03:12,210 --> 00:03:15,500 Ktoś ma jakieś pytania do tej pory? 73 00:03:15,500 --> 00:03:17,720 OK. 74 00:03:17,720 --> 00:03:22,430 >> Tak jak powiedzieliśmy, serwer WWW otrzymuje tego żądania HTTP, a następnie wystawia ten 75 00:03:22,430 --> 00:03:24,760 Odpowiedzi HTTP. 76 00:03:24,760 --> 00:03:29,100 I jak rozmawialiśmy wcześniej, CS50 Urządzenie jest serwer WWW Apache. 77 00:03:29,100 --> 00:03:32,490 Więc kiedy ludzie pracują na P ustawić siedem, idziesz do pracy z 78 00:03:32,490 --> 00:03:34,120 Serwer WWW Apache. 79 00:03:34,120 --> 00:03:37,890 Nigdy nie będziesz musiał naprawdę działa z Apache bezpośrednio zbyt wiele. 80 00:03:37,890 --> 00:03:41,920 Ci jakby trochę skonfigurować Apache podczas określania hostów wirtualnych lub 81 00:03:41,920 --> 00:03:44,970 Gospodarze, V i dostaniemy jak w trochę. 82 00:03:44,970 --> 00:03:50,620 >> Ale w zasadzie, serwer WWW Apache skonfigurowane do pracy z PHP rodzaju 83 00:03:50,620 --> 00:03:51,730 z po wyjęciu z pudełka. 84 00:03:51,730 --> 00:03:56,170 Więc co tak naprawdę się dzieje, gdy idziesz do jednej z witryn internetowych, takich jak, na przykład, 85 00:03:56,170 --> 00:04:00,360 host lokalny ukośnik index.php czy coś, to, że Twoja przeglądarka wysyła 86 00:04:00,360 --> 00:04:04,330 wniosek, a następnie Apache siedzi tam i domyśla się z tym zrobić. 87 00:04:04,330 --> 00:04:08,840 I działanie jest do wykonania że kod w index.php i 88 00:04:08,840 --> 00:04:11,330 następnie wysłać go z powrotem. 89 00:04:11,330 --> 00:04:15,640 Więc nie jest to. 90 00:04:15,640 --> 00:04:16,980 Więc jakby o tym rozmawialiśmy. 91 00:04:16,980 --> 00:04:21,990 Więc może po prostu służyć plik statyczny lub uruchom kod PHP, a następnie problem 92 00:04:21,990 --> 00:04:23,510 odpowiedź. 93 00:04:23,510 --> 00:04:27,670 >> Tak to częste pytanie, które może się się dobrze, w jaki sposób tak naprawdę do czynienia 94 00:04:27,670 --> 00:04:31,750 wielu użytkowników z konieczności w tym samym czasie? 95 00:04:31,750 --> 00:04:36,930 Więc wyobraźcie sobie, że piszesz sieci serwer, jeśli miał, że serwer WWW 96 00:04:36,930 --> 00:04:39,900 starasz się pisać w czymś jak C czy coś takiego, 97 00:04:39,900 --> 00:04:45,150 w zasadzie można myśleć o tym, jak tam może być jakiś rodzaj kodu, który 98 00:04:45,150 --> 00:04:49,330 otrzyma wniosek, ale potem to musi zrobić wszystko działa na nim. 99 00:04:49,330 --> 00:04:53,060 Może mieć, na przykład, skontaktować bazy danych lub coś w tym stylu. 100 00:04:53,060 --> 00:04:53,300 Prawda? 101 00:04:53,300 --> 00:04:56,010 A potem to zrobić tego rodzaju przetworzenia a następnie 102 00:04:56,010 --> 00:04:57,060 odesłać odpowiedź. 103 00:04:57,060 --> 00:04:58,950 Tak to jest jak wysoki Przegląd poziom. 104 00:04:58,950 --> 00:05:04,210 >> Ale to nie jest oczywiste, w jaki sposób Można to zrobić tak, że dwie osoby lub 105 00:05:04,210 --> 00:05:09,040 Nawet 1000 osób może pracować z Serwer WWW w tym samym czasie. 106 00:05:09,040 --> 00:05:14,880 Więc rozwiązanie, które wykorzystuje Apache nazywa nici lub procesy. 107 00:05:14,880 --> 00:05:16,770 Więc może słyszeliście terminy te przed. 108 00:05:16,770 --> 00:05:22,190 Jest OK, jeśli nie ma, ale po prostu uważam, o wątków lub procesów sposobów 109 00:05:22,190 --> 00:05:26,290 system operacyjny lub program użytkownika lub coś takiego lub serwer WWW 110 00:05:26,290 --> 00:05:28,810 do rodzaju wykonywać wiele rzeczy na raz. 111 00:05:28,810 --> 00:05:31,760 Więc może słyszeliście określenie jak nici wykonania. 112 00:05:31,760 --> 00:05:34,140 Więc to jest trochę jak jesteś rodzaj pracy wielozadaniowej. 113 00:05:34,140 --> 00:05:37,710 >> A jeśli widziałem na polu twojego laptop, czy coś takiego, 114 00:05:37,710 --> 00:05:43,040 wielordzeniowych, co możesz zrobić, to można uruchomić dwa różne wątki na różnych 115 00:05:43,040 --> 00:05:46,700 części centralnej, tak że może w rzeczywistości nastąpić w tym samym czasie. 116 00:05:46,700 --> 00:05:48,100 Więc to jest naprawdę potężny. 117 00:05:48,100 --> 00:05:52,270 I to jest rodzaj Apache Rozwiązaniem tego problemu. 118 00:05:52,270 --> 00:05:57,900 >> Tak są tam tak jakby żadnych problemów z tym podejściem, choć? 119 00:05:57,900 --> 00:05:59,870 Więc myślę, że rodzaj napisał je tam. 120 00:05:59,870 --> 00:06:03,440 Ale obaj rodzaju używają dużo pamięci. 121 00:06:03,440 --> 00:06:07,490 To jest bardzo drogie, aby utworzyć wątek lub procesu. 122 00:06:07,490 --> 00:06:11,750 >> I część rozumowania jest to, że po prostu jak wtedy, gdy masz uruchomiony program w C 123 00:06:11,750 --> 00:06:15,090 jak głównym, a następnie, że połączenia Inną funkcją, która ma 124 00:06:15,090 --> 00:06:16,520 jakiś stos. 125 00:06:16,520 --> 00:06:19,910 Więc nici wymagają całkowicie osobny stos, który 126 00:06:19,910 --> 00:06:21,220 może być dość duża. 127 00:06:21,220 --> 00:06:25,170 I czy można sobie wyobrazić ton użytkowników na swojej stronie, to masz 128 00:06:25,170 --> 00:06:26,280 wiele różnych wątków. 129 00:06:26,280 --> 00:06:28,230 To by wiele stosów zarządzania i utrzymania. 130 00:06:28,230 --> 00:06:31,280 Więc jest to duże zużycie pamięci. 131 00:06:31,280 --> 00:06:35,650 >> A następnie, także, powiedzmy, że tylko jeden procesor, lub powiedzmy, że mają 132 00:06:35,650 --> 00:06:38,460 więcej wątków niż trzeba te Multicory. 133 00:06:38,460 --> 00:06:38,730 Prawda? 134 00:06:38,730 --> 00:06:43,280 Więc powiedzmy, że miał 10 tematów i miał tylko pięć procesorów. 135 00:06:43,280 --> 00:06:46,260 Jesteś rodzaju muszą zrobić to, gdzie przełączania pomiędzy prądem 136 00:06:46,260 --> 00:06:49,090 jeden, który jest uruchomiony, ponieważ nie można uruchomić wszystkie 10 na raz. 137 00:06:49,090 --> 00:06:50,980 I to się nazywa przełączanie kontekstu. 138 00:06:50,980 --> 00:06:54,260 I termin ten w rzeczywistości zawiera kilka różne konteksty, ale niech tylko 139 00:06:54,260 --> 00:06:56,620 myśleć o tym, jak zmiana między dwoma wątkami. 140 00:06:56,620 --> 00:06:59,730 To może być dość drogie, ponieważ w zasadzie to, co musisz zrobić, to ty 141 00:06:59,730 --> 00:07:03,340 przestać, co robisz, zachowaj stan, że prowadzenie wątku, i 142 00:07:03,340 --> 00:07:05,440 następnie przełączać się gdzieś indziej. 143 00:07:05,440 --> 00:07:09,420 >> Więc nie każdy rodzaj zobaczyć motywacja, dlaczego wątki i 144 00:07:09,420 --> 00:07:12,030 Procesy mogą być trochę nieporęczne? 145 00:07:12,030 --> 00:07:13,840 A czy masz pytanie? 146 00:07:13,840 --> 00:07:14,376 OK. 147 00:07:14,376 --> 00:07:15,070 Fajne. 148 00:07:15,070 --> 00:07:18,090 Ktoś ma jakieś pytania? 149 00:07:18,090 --> 00:07:19,620 OK. 150 00:07:19,620 --> 00:07:26,720 >> Jeśli więc zrobić krok do tyłu na chwilę, tam jest coś w rodzaju 151 00:07:26,720 --> 00:07:30,350 obserwacja, że ​​możemy o Wiele aplikacji internetowych. 152 00:07:30,350 --> 00:07:34,810 I to jest naprawdę, że wiele z nich faktycznie nie zrobić dużo użyteczne 153 00:07:34,810 --> 00:07:37,140 pracy wewnątrz wątku. 154 00:07:37,140 --> 00:07:41,170 Więc czy ktoś rozpoczął się P ustawić siedem w ogóle? 155 00:07:41,170 --> 00:07:45,650 Więc chcesz być może opisać niektóre części? 156 00:07:45,650 --> 00:07:47,850 Pracowałeś na logowanie lub coś w tym stylu? 157 00:07:47,850 --> 00:07:49,330 >> PUBLICZNOŚCI: Nie. 158 00:07:49,330 --> 00:07:49,780 >> KEVIN SCHMID: OK. 159 00:07:49,780 --> 00:07:50,150 Nic nie szkodzi. 160 00:07:50,150 --> 00:07:50,900 Przepraszam. 161 00:07:50,900 --> 00:07:55,790 Ale w zasadzie, w zestawie P, jesteś będzie dokonanie wielu rodzaj 162 00:07:55,790 --> 00:07:59,760 zapytań do bazy danych, aby uzyskać pewne Informacje z tej bazy danych. 163 00:07:59,760 --> 00:08:03,330 A co Twój kod będzie się robić, co to proces Apache lub 164 00:08:03,330 --> 00:08:06,030 że wątek Apache będzie robić gdy ma się kontakt 165 00:08:06,030 --> 00:08:08,990 Baza danych jest to rodzaj będzie siedzi tam i to będzie 166 00:08:08,990 --> 00:08:12,130 czekając na bazie odpowiedzieć. 167 00:08:12,130 --> 00:08:16,290 >> Teraz, że może nie brzmieć jak takie wielkie czynienia, ponieważ baza danych jest w twoim 168 00:08:16,290 --> 00:08:18,240 Urządzenie CS50, prawda? 169 00:08:18,240 --> 00:08:22,930 Ale jest coś w rodzaju sieci Latency tam, bo teraz internetowej 170 00:08:22,930 --> 00:08:26,830 Serwer musi wydać własne żądanie Baza danych do komunikacji z 171 00:08:26,830 --> 00:08:29,520 bazy danych, a następnie dostać się, że informacje z powrotem. 172 00:08:29,520 --> 00:08:33,190 Więc teraz to jest jak dobrze czekać na mnie, jestem zamiar iść coś z 173 00:08:33,190 --> 00:08:35,770 bazy danych, a następnie jest Wielu czeka dzieje. 174 00:08:35,770 --> 00:08:36,870 Czy to ma sens? 175 00:08:36,870 --> 00:08:38,580 >> A dla niektórych rzeczy to nie jest tak źle. 176 00:08:38,580 --> 00:08:41,950 Jeżeli po prostu musi, na przykład Dostęp do pamięci, że nie jest tak, 177 00:08:41,950 --> 00:08:44,100 straszne I / O opóźnienie. 178 00:08:44,100 --> 00:08:47,110 I kiedy mówię, I / O opóźnienie, co mam na myśli to, jak wszelkiego rodzaju jak 179 00:08:47,110 --> 00:08:48,290 moc wejściowa. 180 00:08:48,290 --> 00:08:52,950 Jednak, aby uzyskać dostęp do plików na dysku, jak gdybym chciał służyć statyczny HTML 181 00:08:52,950 --> 00:08:57,850 plik, który był na mojej stronie internetowej lub coś takiego, że niby trzeba 182 00:08:57,850 --> 00:09:02,310 zatrzymać na chwilę, przeczytaj ten plik się z dysku, a następnie w 183 00:09:02,310 --> 00:09:04,400 że proces czekam. 184 00:09:04,400 --> 00:09:06,700 Nie robię pożyteczną pracę. 185 00:09:06,700 --> 00:09:11,270 >> To nie jest prawda, ze wszystkiego, ale jest powszechne w zestaw aplikacji, takich jak P 186 00:09:11,270 --> 00:09:13,960 siedem i wiele aplikacji że nie jesteś 187 00:09:13,960 --> 00:09:15,440 rzeczywiście robi dużo myślenia. 188 00:09:15,440 --> 00:09:19,090 I kiedy mówię myślenia, to znaczy jak pracy obliczeniowej. 189 00:09:19,090 --> 00:09:23,270 Praca więc może być coś obliczeniowa jak, powiedzmy, że chcesz 190 00:09:23,270 --> 00:09:26,590 Napisać do serwera WWW, który po prostu obliczone n-liczb Fibonacciego. 191 00:09:26,590 --> 00:09:29,300 To nie brzmi jak w szczególności zabawa serwer WWW. 192 00:09:29,300 --> 00:09:34,220 Jak bym się nie spodziewał, że strona będzie następnym Facebook, ale pewne 193 00:09:34,220 --> 00:09:35,610 rodzaj pracy obliczeniowej. 194 00:09:35,610 --> 00:09:39,570 >> I można sobie wyobrazić, że z wymianą innego rodzaju ciekawe 195 00:09:39,570 --> 00:09:43,070 obliczeniowa pracy. 196 00:09:43,070 --> 00:09:46,050 Powiedzmy, że chcesz napisać coś że obliczone stopnie 197 00:09:46,050 --> 00:09:49,170 oddzielenie dwóch osób lub coś w tym stylu. 198 00:09:49,170 --> 00:09:51,860 Tak aby nie wiązać jakieś obliczenia, prawda? 199 00:09:51,860 --> 00:09:56,630 I nawet wtedy, zrobić, że jeszcze zrobić wiele czeka na być może 200 00:09:56,630 --> 00:09:59,550 trzeba kwerendy bazy danych, aby spojrzeć się, kto jest przyjacielem, który albo 201 00:09:59,550 --> 00:10:00,600 coś w tym stylu. 202 00:10:00,600 --> 00:10:03,510 Więc nie jest tego rodzaju pojęcia prac obliczeniowych. 203 00:10:03,510 --> 00:10:05,260 Czy to ma sens? 204 00:10:05,260 --> 00:10:08,258 Czy ktoś ma jakieś pytania? 205 00:10:08,258 --> 00:10:11,960 >> No i myślę, że tam umieścić serwery czatu ponieważ serwery czatu są rodzajem 206 00:10:11,960 --> 00:10:13,240 Innym dobrym przykładem. 207 00:10:13,240 --> 00:10:15,250 Serwer nie ma czatu zrobić dużo myślenia. 208 00:10:15,250 --> 00:10:18,350 To po prostu musi czekać na ludzi, aby wysyłać wiadomości i wtedy, gdy 209 00:10:18,350 --> 00:10:19,800 oni, wysłać je. 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 >> Więc znowu zakręcić, Apache i podobne serwery www, jak tego rozwidla 213 00:10:28,180 --> 00:10:31,470 Wiele wątków i procesów, które może być trochę marnotrawstwo. 214 00:10:31,470 --> 00:10:37,530 Sądzę więc, że pytanie, które mogą mieć od tego jest nie musimy mieć 215 00:10:37,530 --> 00:10:39,610 wiele wątków i procesów? 216 00:10:39,610 --> 00:10:41,890 Co zrobić, jeśli mieliśmy tylko jedną? 217 00:10:41,890 --> 00:10:45,710 >> Więc niby namalować obraz z tego, co to będzie wyglądać. 218 00:10:45,710 --> 00:10:47,810 Warto więc korzystać tylko jeden wątek. 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 Więc wyobraź sobie, to z jednego wątku. 221 00:10:52,790 --> 00:10:56,600 >> Załóżmy, że nie byliśmy naprawdę robi że dużo użyteczne - i kiedy mówię 222 00:10:56,600 --> 00:10:59,450 użyteczne, to znaczy pracę obliczeniową - 223 00:10:59,450 --> 00:11:01,130 w tych wielu wątków wcześniej. 224 00:11:01,130 --> 00:11:04,180 Więc rodzaj konsolidacji wszystko w jednym wątku. 225 00:11:04,180 --> 00:11:07,780 Co z tego, że mieliśmy jeden wątek tego rodzaju po prostu odchodzi w pętli i 226 00:11:07,780 --> 00:11:10,880 ciągle coś nie sprawdza Nowy zdarzyć. 227 00:11:10,880 --> 00:11:15,130 Tak na przykład, coś nowego się stało może oznaczać, że coś z powrotem 228 00:11:15,130 --> 00:11:19,310 bazy danych, albo ktoś wysłany mi nowe żądania HTTP. 229 00:11:19,310 --> 00:11:22,290 To są rodzajem zdarzeń się stało, prawda? 230 00:11:22,290 --> 00:11:26,130 >> A następnie, co mogę zrobić, gdy te nowe rzeczy dzieją się w tym samym wątku 231 00:11:26,130 --> 00:11:30,120 wykonania, ten pojedynczy wątek wykonanie, można wywołać niektóre kod, który 232 00:11:30,120 --> 00:11:32,410 będzie obsługiwać tej konkretnej rzeczy. 233 00:11:32,410 --> 00:11:36,640 Tak na przykład, jeśli mam coś z powrotem z bazy danych, nie mogłem uruchomić mojego 234 00:11:36,640 --> 00:11:40,960 małe obliczeniowa część, że faktycznie po prostu przygotowuje się do rzeczy 235 00:11:40,960 --> 00:11:42,620 wysłać z powrotem do użytkownika. 236 00:11:42,620 --> 00:11:46,710 Tak robi, że niby ma sens? 237 00:11:46,710 --> 00:11:49,940 >> Ale to, co naprawdę Konsekwencje tego? 238 00:11:49,940 --> 00:11:50,660 Prawda? 239 00:11:50,660 --> 00:11:53,730 Dlatego, że zostały napisane dużo kodu, który - 240 00:11:53,730 --> 00:11:58,330 i mam zamiar skoczyć do przodu w slajdach, czy to jest OK. 241 00:11:58,330 --> 00:12:00,930 Więc jeśli nie masz nic przeciwko, jestem zamiar zrobić krok do tyłu. 242 00:12:00,930 --> 00:12:03,410 Więc tego typu rzeczy jest zwana pętla zdarzeń. 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 I to jest podstawowy rodzaj Ideą Node.js. 245 00:12:07,240 --> 00:12:11,240 >> Więc co Node.js jest naprawdę robią w internecie Serwer jest tam jeden wątek 246 00:12:11,240 --> 00:12:14,850 która jest w zasadzie po w pętli jak podczas gdy jeden rodzaj przedsię 247 00:12:14,850 --> 00:12:18,510 kaptur z Node.js to stale sprawdzenie, czy możemy otrzymać nowe rzeczy? 248 00:12:18,510 --> 00:12:22,720 I wtedy to będzie działać teleskopowe że ustanowiony. 249 00:12:22,720 --> 00:12:26,720 Ale dobre pytanie brzmi, jak można tak się stało 250 00:12:26,720 --> 00:12:28,090 z istniejących rzeczy? 251 00:12:28,090 --> 00:12:32,440 >> Więc umieścić linii kodu C tutaj w zasadzie wygląda to otwarcie 252 00:12:32,440 --> 00:12:33,060 złożyć, prawda? 253 00:12:33,060 --> 00:12:36,090 I Ona po prostu wyszedł z albumu. 254 00:12:36,090 --> 00:12:39,600 Więc musiałem otworzyć jej nowy plik. 255 00:12:39,600 --> 00:12:43,810 Więc sposób nasz kod C do działania - 256 00:12:43,810 --> 00:12:47,890 i myślę, że powód był wybrałem pliki ponieważ jest to rodzaj stopniu 257 00:12:47,890 --> 00:12:52,000 pracy I / O, które zrobiliśmy w C Poczucie, że jest wyjście wejście. 258 00:12:52,000 --> 00:12:55,070 Tak nazywamy ten kod robi to f otwarte. 259 00:12:55,070 --> 00:12:59,370 A następnie w następnym wierszu naszego Program, możemy pracować z F. 260 00:12:59,370 --> 00:13:02,710 >> Więc będzie to przykład czegoś to jak synchroniczna lub 261 00:13:02,710 --> 00:13:06,850 blokowanie, ponieważ na tej pierwszej linii nie czekamy, aż 262 00:13:06,850 --> 00:13:08,110 uzyskać plik otwarty. 263 00:13:08,110 --> 00:13:12,260 Tak więc w drugiej linii, wiemy, że Można pracować z f, lecz oznacza to, że 264 00:13:12,260 --> 00:13:16,240 że druga linia naprawdę nie można uruchomić dopóki pierwsza linia jest wykonywana. 265 00:13:16,240 --> 00:13:17,760 Czy to ma sens? 266 00:13:17,760 --> 00:13:20,890 >> Więc będzie to zły umieścić w procedury obsługi zdarzeń. 267 00:13:20,890 --> 00:13:23,920 A powodem tego jest to, że tego rodzaju oczekiwania, prawda? 268 00:13:23,920 --> 00:13:26,500 Więc byłoby to przywrócić nas z powrotem do tej samej rzeczy. 269 00:13:26,500 --> 00:13:29,470 A teraz nawet nie ma korzyści z wielu wątków lub 270 00:13:29,470 --> 00:13:32,390 procesy, ponieważ mamy jeden wątek w Node.js. 271 00:13:32,390 --> 00:13:35,496 Czy to ma sens dla wszystkich? 272 00:13:35,496 --> 00:13:35,990 >> PUBLICZNOŚCI: Czekaj. 273 00:13:35,990 --> 00:13:36,980 Więc co jest wymiana? 274 00:13:36,980 --> 00:13:37,840 >> KEVIN SCHMID: Och, tak, tak. 275 00:13:37,840 --> 00:13:39,560 Więc mam zamiar dostać się do wymiana. 276 00:13:39,560 --> 00:13:40,430 OK. 277 00:13:40,430 --> 00:13:42,960 Co z tego, że mieliśmy coś że wyglądało to? 278 00:13:42,960 --> 00:13:45,730 Więc co, jeśli teraz edytowane f otworzyć mały? 279 00:13:45,730 --> 00:13:48,370 Więc jestem w tym samym przejściu dwa argumenty, jak wcześniej. 280 00:13:48,370 --> 00:13:52,610 Nadal kocham nową piosenkę że wyszedł z. 281 00:13:52,610 --> 00:13:57,260 Ale olewam trzecią rzecz, która jest to zmienna o nazwie Code. 282 00:13:57,260 --> 00:14:02,280 >> Ale to, co jest rzeczywiście kod W związku z tym! 283 00:14:02,280 --> 00:14:05,360 Jest to jak zmienna zwykłym C? 284 00:14:05,360 --> 00:14:06,740 Jest to funkcja, prawda? 285 00:14:06,740 --> 00:14:09,450 I to może być trochę dziwne, ponieważ Jestem faktycznie jak teraz przechodząc 286 00:14:09,450 --> 00:14:12,320 funkcjonować w innej funkcji. 287 00:14:12,320 --> 00:14:14,400 >> Tak, kilka rzeczy zwrócić uwagę na ten temat. 288 00:14:14,400 --> 00:14:17,145 Jeden, nie mam właściwie nazywając Funkcja kodu. 289 00:14:17,145 --> 00:14:20,650 Więc nie widzę kodu z lewy nawias, prawo nawias. 290 00:14:20,650 --> 00:14:23,010 Jestem tylko przejazdem w kodzie. 291 00:14:23,010 --> 00:14:26,990 I C, co to będzie faktycznie to daj mi, że rzeczywisty wskaźnik 292 00:14:26,990 --> 00:14:29,740 Kod, i to może go uruchomić. 293 00:14:29,740 --> 00:14:33,350 Ale pomyśl o tym, jak jesteś przepuszczenie kodu podczas 294 00:14:33,350 --> 00:14:35,150 że plik jest otwarty. 295 00:14:35,150 --> 00:14:41,430 >> Ale co to oznacza to, że teraz Reszta mojego programu, który mógłby zrobić 296 00:14:41,430 --> 00:14:47,050 inne rzeczy, może nadal robić inne rzeczy, a my nie, naprawdę czekać, ale 297 00:14:47,050 --> 00:14:50,890 tylko z tyłu głowy, że gdy są otwarte, bieg ten plik, że 298 00:14:50,890 --> 00:14:52,130 Kod w górę. 299 00:14:52,130 --> 00:14:53,390 Czy to ma sens? 300 00:14:53,390 --> 00:14:58,060 >> A teraz idea Node.js jest to, że Kod w rzeczy zrobić z f 301 00:14:58,060 --> 00:15:04,590 część powinna być dość krótka i prosta oraz proste i naprawdę nie być 302 00:15:04,590 --> 00:15:06,160 bardzo intensywnych obliczeń. 303 00:15:06,160 --> 00:15:09,390 To może otworzyć inny plik, ale że powinien być również bardzo szybkie 304 00:15:09,390 --> 00:15:14,710 ponieważ powinien po prostu powiedzieć, zrobić kolejny f otworzyć, a następnie wywołać ten inny kod. 305 00:15:14,710 --> 00:15:19,100 >> Więc po prostu się zupełnie jasne, f otwarcie, że ma nową piosenkę Katy Perry 306 00:15:19,100 --> 00:15:23,060 done mp3, który będzie dość dużo wrócić natychmiast. 307 00:15:23,060 --> 00:15:27,820 A następnie możemy po prostu kontynuować to inne rzeczy, ponieważ wszystko, co teraz f 308 00:15:27,820 --> 00:15:33,410 otwarte zaproszenie nie jest powiedzieć, w zasadzie Podstawowym f otwarty kod otworzyć ten plik 309 00:15:33,410 --> 00:15:36,020 i kiedy skończysz otwarcie tego plik lub kiedy się go z powrotem, 310 00:15:36,020 --> 00:15:37,480 następnie uruchomić ten kod. 311 00:15:37,480 --> 00:15:39,540 Ale faktycznie nie uruchomić tego kodu. 312 00:15:39,540 --> 00:15:41,815 I trzeba było pytanie? 313 00:15:41,815 --> 00:15:46,180 >> PUBLICZNOŚCI: Wydawało się sugerować kilka razy, że dodanie obliczeniowo 314 00:15:46,180 --> 00:15:50,545 intensywne Kod rodzaju złamać [Niesłyszalne] System napędzany. 315 00:15:50,545 --> 00:15:51,795 [Niesłyszalne]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVIN SCHMID: To jest dobre pytanie. 318 00:15:55,290 --> 00:15:59,280 Więc rzeczywiście przykład jak można zintegrować obliczeniowo 319 00:15:59,280 --> 00:16:01,090 intensywne Kod w trochę. 320 00:16:01,090 --> 00:16:03,620 Tak, gdy mamy do przykładów kodu, Na pewno będę ciągnąć tego. 321 00:16:03,620 --> 00:16:04,700 Czy to w porządku? 322 00:16:04,700 --> 00:16:05,950 Dziękuję. 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> Co masz na imię? 325 00:16:08,750 --> 00:16:10,620 >> PUBLICZNOŚCI: Aaron. 326 00:16:10,620 --> 00:16:14,830 >> KEVIN SCHMID: Aaron prowadzi się bardzo dobry punkt, którym jest to, że gdybym miał 327 00:16:14,830 --> 00:16:18,560 jakiś kod w obliczeniowo rzeczy zrobić z f części, resztę 328 00:16:18,560 --> 00:16:22,880 mój program nie może działać i nie można słuchać nowych wniosków lub czegokolwiek, aż wszystkie 329 00:16:22,880 --> 00:16:24,270 że materiał jest gotowy. 330 00:16:24,270 --> 00:16:27,390 Więc jeśli piszę kod w ogóle węzła chyba że robimy coś jak będę 331 00:16:27,390 --> 00:16:33,060 sugerować, później, gdy patrzymy na przykłady kodu, muszę mieć pewność, że 332 00:16:33,060 --> 00:16:36,060 mój kod nie związać się Pętla ta impreza. 333 00:16:36,060 --> 00:16:38,120 Czy to ma sens? 334 00:16:38,120 --> 00:16:38,350 OK. 335 00:16:38,350 --> 00:16:40,040 Fajne. 336 00:16:40,040 --> 00:16:47,090 >> Więc Node.js oferuje te ramy, które można zbudować te napędzane zdarzenia 337 00:16:47,090 --> 00:16:48,210 Serwery z. 338 00:16:48,210 --> 00:16:53,460 Więc ma tego rodzaju asynchroniczne non-blocking I / O bibliotekach, natomiast 339 00:16:53,460 --> 00:16:56,800 standardowe biblioteki C, które już zostały pracy z, jak, jeśli tylko 340 00:16:56,800 --> 00:16:59,500 wykorzystywać je w taki sam sposób, że mamy stosuje je otwiera i przy f 341 00:16:59,500 --> 00:17:03,000 rzeczy, bo te blokują rzeczywiście trzeba czekać na 342 00:17:03,000 --> 00:17:04,470 który plik otworzyć. 343 00:17:04,470 --> 00:17:09,290 >> Ale Node.js daje, że i to w zasadzie wiąże się Google V8 344 00:17:09,290 --> 00:17:14,030 Silnik JavaScript, który jest przyczyną że Chrome jest tak szybki w obróbce 345 00:17:14,030 --> 00:17:17,040 JavaScript ponieważ ma ten silnik V8. 346 00:17:17,040 --> 00:17:22,460 Tak, wiem, że brzmi to jak jeden z tych, WWDC konferencji deweloperów rzecz 347 00:17:22,460 --> 00:17:25,390 gdzie po prostu wyrzucić kilka Numer listu rzeczy dla procesorów 348 00:17:25,390 --> 00:17:26,910 i powiedzieć, że to jest cool. 349 00:17:26,910 --> 00:17:34,200 Ale to jest fajne, że oni to, ponieważ skrypty JavaScript - 350 00:17:34,200 --> 00:17:37,010 a może, jeśli nie jesteś zaznajomiony z JavaScript jeszcze dlatego, że nie mieli 351 00:17:37,010 --> 00:17:38,180 wykłady na nim - 352 00:17:38,180 --> 00:17:40,770 ale JavaScript jest interpretowany język. 353 00:17:40,770 --> 00:17:41,970 >> I to jest ważny punkt też. 354 00:17:41,970 --> 00:17:45,790 Dlatego tak ważne dla naszej sieci Serwery się szybko, prawda? 355 00:17:45,790 --> 00:17:49,970 A jeśli po prostu działa JavaScript Kod, który był po prostu interpretować 356 00:17:49,970 --> 00:17:52,130 byle tłumacza to może być powolne. 357 00:17:52,130 --> 00:17:55,980 Korzyści z posiadania tak tego węzła super szybki V8 tłumacza. 358 00:17:55,980 --> 00:17:59,580 I nie wiem, czy nazwał go ponieważ uderzenie V8 w czoło 359 00:17:59,580 --> 00:18:01,110 rzecz, ale OK. 360 00:18:01,110 --> 00:18:07,070 >> Więc przygotowaliśmy kilka przykładów pod tym adresem URL. 361 00:18:07,070 --> 00:18:10,490 Po seminarium, mam iść do sortowania porozmawiać o tym, jak można dostać zestaw węzła 362 00:18:10,490 --> 00:18:13,570 się, ale teraz, po prostu jakby chciał przejść przez niektóre przykłady kodu. 363 00:18:13,570 --> 00:18:17,250 Więc jeśli chcesz iść dalej, wszystko Kod źródłowy jest dostępny tam. 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> Więc zostawię ten adres URL się za mało. 366 00:18:22,280 --> 00:18:24,440 A potem mam zamiar się przełączyć się do terminalu. 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 Czy wszyscy dobrze się z tym adresem? 369 00:18:34,400 --> 00:18:37,990 Więc idę do przełączania do mojego terminalu tutaj. 370 00:18:37,990 --> 00:18:42,030 >> Więc tutaj jest kod, który Mam na dzisiaj. 371 00:18:42,030 --> 00:18:43,960 Dlaczego nie zacząć simpler.js złożyć? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 Inną rzeczą jest to, że wszystko to kod zostanie zapisana w 374 00:18:52,100 --> 00:18:56,660 Których obsługa JavaScript może lub może nie znać. 375 00:18:56,660 --> 00:19:00,170 Myślę, że kilka rzeczy jest to, że wiele kodu JavaScript jest rodzaj 376 00:19:00,170 --> 00:19:04,000 Składnia i strukturę bardzo podobne do C, można więc trochę go odebrać jako 377 00:19:04,000 --> 00:19:05,020 iść. 378 00:19:05,020 --> 00:19:08,750 Próbowałem napisać wiele Kod wyjściowy do tego w sposób, który jest 379 00:19:08,750 --> 00:19:11,230 podobne do C tak, aby trochę bardziej czytelne. 380 00:19:11,230 --> 00:19:15,980 Ale jak przejść, będę wykazując niektóre dodatkowe 381 00:19:15,980 --> 00:19:18,980 funkcje JavaScript, które są całkiem fajne. 382 00:19:18,980 --> 00:19:21,510 >> Ale spójrzmy na ten program przykładowy. 383 00:19:21,510 --> 00:19:24,820 Myślę, że wszystko jest odcięte tam. 384 00:19:24,820 --> 00:19:28,500 Idę do ustalenia, że ​​Real szybko, jeśli to jest OK, czy nie. 385 00:19:28,500 --> 00:19:31,400 Nie wiem, co to zrobi. 386 00:19:31,400 --> 00:19:34,660 Jest to, że trochę lepiej? 387 00:19:34,660 --> 00:19:36,510 Widać var ​​i rzeczy? 388 00:19:36,510 --> 00:19:39,320 OK. 389 00:19:39,320 --> 00:19:44,120 >> Tak więc pierwsza linia jest jak JavaScript Wersja zmiennej 390 00:19:44,120 --> 00:19:44,800 deklaracja. 391 00:19:44,800 --> 00:19:49,870 Więc po prostu podkreślić, co to by wyglądają jak w C. Tak to jest jak 392 00:19:49,870 --> 00:19:52,620 Indeks mnie mówiąc równa się trzy lub coś w tym stylu. 393 00:19:52,620 --> 00:19:55,740 Więc nie określić typ. 394 00:19:55,740 --> 00:20:00,780 JavaScript ma rodzajów, ale to bardzo dynamicznie wpisany w naturę, tak 395 00:20:00,780 --> 00:20:02,580 nie przedstawił jakiegokolwiek rodzaju na nim. 396 00:20:02,580 --> 00:20:03,670 Tak to właśnie jest var. 397 00:20:03,670 --> 00:20:05,320 To tak, jakby zmienna. 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> I dzwonię tej zmiennej HTTP. 400 00:20:08,340 --> 00:20:12,480 I na mojej prawej stronie, mam Wyrażenie, które chcę umieścić w protokole HTTP. 401 00:20:12,480 --> 00:20:14,960 I to mówi wymagają protokołu HTTP. 402 00:20:14,960 --> 00:20:18,500 Więc to jest trochę podobny do włączenia. 403 00:20:18,500 --> 00:20:22,940 To trochę bardziej wydajny niż uwzględnić w ten sposób, że obejmują 404 00:20:22,940 --> 00:20:26,100 po prostu skopiować i wkleić nagłówek plik dla prototypów funkcji lub 405 00:20:26,100 --> 00:20:27,930 co z definicji typu. 406 00:20:27,930 --> 00:20:30,590 Ale wymaga to rzeczywiście będzie aby nam kod. 407 00:20:30,590 --> 00:20:33,280 >> Więc można myśleć o tym, jak importowanie kodu. 408 00:20:33,280 --> 00:20:37,960 Gdzieś w module Node.js System lub cokolwiek, mają to wszystko 409 00:20:37,960 --> 00:20:40,790 Kod serwera HTTP, więc jestem po prostu ściągam go na własną rękę 410 00:20:40,790 --> 00:20:43,130 użytku w tym programie. 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> Tak więc mam tej funkcji które napisałem. 413 00:20:46,930 --> 00:20:50,330 I zauważyć, że nie trzeba określać Zwracany typ lub rodzaj 414 00:20:50,330 --> 00:20:51,140 argumenty ponownie. 415 00:20:51,140 --> 00:20:54,440 Tak jakby luźne wpisany że niby sensie. 416 00:20:54,440 --> 00:20:57,290 Dwa argumenty, że zajmuje się, żądanie i odpowiedź. 417 00:20:57,290 --> 00:21:02,080 Więc to jest coś jak koncepcyjnie zaznajomieni z obrazka, które mieliśmy 418 00:21:02,080 --> 00:21:05,280 Na ekranie przed ponieważ mamy ten wniosek, że 419 00:21:05,280 --> 00:21:06,410 posiada od użytkownika. 420 00:21:06,410 --> 00:21:09,170 A potem mamy odpowiedź, że możemy napisać rzeczy. 421 00:21:09,170 --> 00:21:15,060 >> Tak więc pierwsza linia ta nie res.writeHead 200 i wtedy to 422 00:21:15,060 --> 00:21:17,070 zwykły tekst typu zawartości. 423 00:21:17,070 --> 00:21:19,300 Więc kawałek to oprócz mało. 424 00:21:19,300 --> 00:21:22,340 Więc skupmy się na res.write za mało. 425 00:21:22,340 --> 00:21:28,420 Zapis jest w zasadzie tak, i pisać głowę, są tylko sposoby sortowania pisać 426 00:21:28,420 --> 00:21:29,960 rzeczy do odpowiedzi. 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 Więc napisz głowę, czy ktoś pamięta z wykładu HTTP, czy faceci 429 00:21:36,230 --> 00:21:39,940 Pamiętam nagłówki w góra rzeczy HTTP? 430 00:21:39,940 --> 00:21:43,580 Więc dlaczego nie po prostu demo nagłówki bardzo szybko. 431 00:21:43,580 --> 00:21:44,640 Byłoby to pomocne? 432 00:21:44,640 --> 00:21:45,500 Czy powinniśmy po prostu rodzaj - 433 00:21:45,500 --> 00:21:46,070 OK. 434 00:21:46,070 --> 00:21:46,740 Pewny. 435 00:21:46,740 --> 00:21:52,340 >> Więc kiedy przeglądarka przechodzi do google.com lub coś w tym stylu, 436 00:21:52,340 --> 00:21:54,250 Jest rzeczywiście trochę więcej - 437 00:21:54,250 --> 00:21:55,380 to jest jak tajemnica - 438 00:21:55,380 --> 00:21:58,340 nie ma jak trochę więcej informacji że jest przez rurę, niż tylko 439 00:21:58,340 --> 00:22:00,180 trochę wyszukiwanie i wszystko. 440 00:22:00,180 --> 00:22:03,550 Tak, aby ci pokazać, mam zamiar użyć programu o nazwie Curl. 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 Więc to jest coś, co można uruchomić na linia poleceń Mac OSX lub w 443 00:22:08,020 --> 00:22:09,830 Urządzenie lub cokolwiek. 444 00:22:09,830 --> 00:22:17,050 I tak, jeśli mam Curl HTTP google.com, Idę zobaczyć kod HTML. 445 00:22:17,050 --> 00:22:21,230 I to jest, w sprawiedliwości, po prostu HTML tego rodzaju każe ci 446 00:22:21,230 --> 00:22:24,695 przekierowanie na www, jeśli Twoja przeglądarka nie automatycznie obsłużyć 447 00:22:24,695 --> 00:22:27,110 przekierowanie. 448 00:22:27,110 --> 00:22:33,390 >> Więc to jest po prostu HTML, ale zamierzam dodać zwijają ten łącznik I flag. 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 I to pokaże mnie nagłówki. 451 00:22:35,600 --> 00:22:40,640 Więc to jest również informacja, że ​​jest przez kiedy się tej odpowiedzi. 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> Tak na górze, widać to HTTP 301 przenieść się na stałe. 454 00:22:45,320 --> 00:22:49,470 I to jest ważne, bo jakby odnosi się to do kodu stanu. 455 00:22:49,470 --> 00:22:53,750 Więc tu jest 301 kod stanu, która jest w zasadzie tylko całkowitą 456 00:22:53,750 --> 00:22:57,750 który mówi przeglądarce, lub ktokolwiek czytając to, jeśli udają, że 457 00:22:57,750 --> 00:23:01,460 jesteś przeglądarki i widzisz to, w zasadzie teraz, jeśli spojrzeć na 458 00:23:01,460 --> 00:23:04,960 że i widzisz 301, wiesz mam zrobić coś specjalnego na podstawie 459 00:23:04,960 --> 00:23:08,810 301, lub stało się coś szczególnego w przeliczeniu na 301. 460 00:23:08,810 --> 00:23:12,640 Tak jest napisane na stałe przeniósł. 461 00:23:12,640 --> 00:23:17,700 >> A następnie, w zasadzie, mamy kilka par wartości kluczowych. 462 00:23:17,700 --> 00:23:22,100 Więc mamy lokalizację jest www.google.com. 463 00:23:22,100 --> 00:23:25,190 A potem jakby wszystko inne rzeczy, ale w zasadzie to, co lokalizacja jest 464 00:23:25,190 --> 00:23:29,662 powiedzenie to nowa lokalizacja jest na stronie www.google.com. 465 00:23:29,662 --> 00:23:33,800 Więc teraz, jeśli przejdziesz do google.com, będziesz rodzaj zobaczyć rodzaj przeglądarki w mgnieniu 466 00:23:33,800 --> 00:23:38,770 na sekundę, a następnie przekierowanie z powrotem do www.google.com. 467 00:23:38,770 --> 00:23:41,840 Więc może zawierać odpowiedzi te nagłówki. 468 00:23:41,840 --> 00:23:43,330 >> I kilka rzeczy zwrócić uwagę. 469 00:23:43,330 --> 00:23:46,890 Więc powiedzmy, że byliśmy naprawdę udany w odwiedzając stronę internetową. 470 00:23:46,890 --> 00:23:49,040 Więc pozwól mi przejść do - 471 00:23:49,040 --> 00:23:51,080 co to jest dobra strona? 472 00:23:51,080 --> 00:23:53,285 Jestem zły na myśleniu dobry strony internetowe na miejscu. 473 00:23:53,285 --> 00:23:53,640 >> PUBLICZNOŚCI: Wikipedia. 474 00:23:53,640 --> 00:23:54,160 >> KEVIN SCHMID: OK. 475 00:23:54,160 --> 00:23:56,040 Zróbmy Wikipedii. 476 00:23:56,040 --> 00:23:58,680 Więc zostałem przeniesiony. 477 00:23:58,680 --> 00:23:59,240 Oh wait. 478 00:23:59,240 --> 00:24:00,160 Czy mogę? 479 00:24:00,160 --> 00:24:00,890 Tak, byłem. 480 00:24:00,890 --> 00:24:01,100 OK. 481 00:24:01,100 --> 00:24:03,005 Więc mam zrobić www. 482 00:24:03,005 --> 00:24:06,006 Więc mam zamiar zrobić www. 483 00:24:06,006 --> 00:24:09,680 I jak widać, tutaj wszystko jest HTML że przeglądarka będzie przetwarzać 484 00:24:09,680 --> 00:24:10,910 na Wikipedii. 485 00:24:10,910 --> 00:24:14,055 >> Ale jeśli trzymać się przesuwać się tutaj, Zobaczymy, co na górze - 486 00:24:14,055 --> 00:24:17,800 wow, jest wiele HTML na Wikipedii - 487 00:24:17,800 --> 00:24:22,550 ale to, co widzę, co tu jest na górze Status ten kod 200, w przeciwieństwie do 488 00:24:22,550 --> 00:24:24,570 301, które widziałem wcześniej. 489 00:24:24,570 --> 00:24:27,100 I zauważyć, że ma ładny przyjazny OK obok. 490 00:24:27,100 --> 00:24:29,470 Tak to jest jak dobry kod stanu. 491 00:24:29,470 --> 00:24:31,160 >> Oznacza, że ​​liczba 200 wygląda znajomo? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 Tak, bo kiedy ja simpler.js, Napisałem 200 tam. 494 00:24:39,880 --> 00:24:43,290 Tak, że w zasadzie mówiąc powiedzieć przeglądarki lub kto próbuje dostać się do 495 00:24:43,290 --> 00:24:45,440 tego, że są skuteczne. 496 00:24:45,440 --> 00:24:49,040 Albo że niby jak my były zbyt udane. 497 00:24:49,040 --> 00:24:54,320 >> I jest to rodzaj specjalnej składni w JavaScript do deklarowania 498 00:24:54,320 --> 00:24:59,870 mapa z tych klawiszy, takich jak rodzaj zawartości i te wartości, takie jak zwykły tekst. 499 00:24:59,870 --> 00:25:03,780 Więc jeśli patrzeć na odpowiedzi, które wróciłem z Wikipedii wcześniej - 500 00:25:03,780 --> 00:25:06,200 Zamierzam spróbować przewinąć się trochę szybciej - 501 00:25:06,200 --> 00:25:09,900 masz te klucze, takie jak serwer i te wartości Apache. 502 00:25:09,900 --> 00:25:12,120 Więc masz klucze i wartości. 503 00:25:12,120 --> 00:25:15,930 Można określić w ten Węzła co do odesłania. 504 00:25:15,930 --> 00:25:19,380 >> Więc to jest rzeczywiście rodzaju, w niektórych sposobów, w pewnym sensie nie jest to 505 00:25:19,380 --> 00:25:23,170 Naprawdę, ale to trochę niższy poziom od kodu PHP, który możesz mieć 506 00:25:23,170 --> 00:25:26,980 pisanie dla P ustawić siedem ponieważ PHP i Apache jakby trochę zająć 507 00:25:26,980 --> 00:25:28,150 te rzeczy dla Ciebie. 508 00:25:28,150 --> 00:25:32,520 W PHP można przesłonić domyślne zachowanie pisząc własne nagłówki. 509 00:25:32,520 --> 00:25:35,520 Jednakże dla celów tego otrzymujemy pisać nasze własne nagłówki. 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> Więc to ma sens, aby linia wszyscy, linia zapisu głowy? 512 00:25:41,105 --> 00:25:41,380 OK. 513 00:25:41,380 --> 00:25:42,280 Niesamowite. 514 00:25:42,280 --> 00:25:45,870 >> Więc co mam zrobić, to kończę odpowiedzi mówiąc hello world. 515 00:25:45,870 --> 00:25:47,040 OK. 516 00:25:47,040 --> 00:25:49,920 Ale to tylko funkcja zwany wniosek obsługi. 517 00:25:49,920 --> 00:25:53,510 Więc teraz rzeczywiście trzeba trochę zrobić coś z tej funkcji, tak? 518 00:25:53,510 --> 00:25:59,170 >> Więc co mam zrobić, to nie jest to Linia, która ma sobie równych serwera var 519 00:25:59,170 --> 00:26:03,530 HTTP.create serwer, a potem przechodzą w obsługi żądania. 520 00:26:03,530 --> 00:26:06,080 Jest to więc rodzaj węzła sposób tworzenia serwera. 521 00:26:06,080 --> 00:26:08,790 I zauważyć, że olewam do obsługi żądania. 522 00:26:08,790 --> 00:26:12,290 Więc to jest mówienie createServer Funkcja, że ​​chcę, aby uczynić mnie 523 00:26:12,290 --> 00:26:16,270 serwera, a gdy ten serwer odbiera odpowiedź, musisz zadzwonić do tego 524 00:26:16,270 --> 00:26:18,680 zażądać funkcję obsługi. 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> Tak, że linia prawie kończy się od razu. 527 00:26:22,290 --> 00:26:28,780 Więc linia serwera var jest zrobione dobrze po tym, że nie dość dużo. 528 00:26:28,780 --> 00:26:31,770 To znaczy, że ma założyć jakiś wewnętrzny państwo wiedzieć, że trzeba by 529 00:26:31,770 --> 00:26:35,400 wywołać tę funkcję obsługi żądania, ale to nie będzie siedzieć i 530 00:26:35,400 --> 00:26:37,730 powiedzmy ma użytkownikowi wysłana mnie jeszcze wniosek? 531 00:26:37,730 --> 00:26:39,270 Czy użytkownik wysłał mi prośbę jeszcze? 532 00:26:39,270 --> 00:26:40,780 Więc to nie blokuje. 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> Więc co to będzie zrobić, to jest w zasadzie teraz przechowuje wskaźnik do tego kodu, 535 00:26:46,120 --> 00:26:49,670 Funkcja obsługi tego żądania, a następnie będzie działać, gdy ktoś ten kod 536 00:26:49,670 --> 00:26:52,170 składa wniosek. 537 00:26:52,170 --> 00:26:54,120 A następnie robimy server.listen. 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337 jest dość arbitralny. 540 00:26:59,960 --> 00:27:02,285 Nie miałem szczególnego powodu do odbioru tego numeru. 541 00:27:02,285 --> 00:27:03,860 To było zupełnie przypadkowe. 542 00:27:03,860 --> 00:27:07,010 Ale to właśnie określa port. 543 00:27:07,010 --> 00:27:10,640 Więc większość serwerów WWW zobaczysz, że używać portu 80, ponieważ jest to rodzaj 544 00:27:10,640 --> 00:27:11,810 z jak konwencji. 545 00:27:11,810 --> 00:27:16,170 Więc jeśli pójdę do czegoś, Nie wiem, Wikipedia.org, 546 00:27:16,170 --> 00:27:17,700 i umieścić dwukropek 8 - 547 00:27:17,700 --> 00:27:18,610 Oh wow, nie można zobaczyć. 548 00:27:18,610 --> 00:27:19,370 Przykro mi. 549 00:27:19,370 --> 00:27:21,820 Ale jeśli to zrobię Wikipedii - 550 00:27:21,820 --> 00:27:24,810 Ja to pisać tutaj tylko po to, jasne jest aparat. 551 00:27:24,810 --> 00:27:29,150 Ale jeśli wziąć to pod przeglądarkę z okrężnicy 80, który określa go do 552 00:27:29,150 --> 00:27:31,430 Wikipedia.org na porcie 80. 553 00:27:31,430 --> 00:27:36,200 Więc jak to jest, jak Stany Zjednoczone mają wiele portów, jak, gdzie można wysyłać 554 00:27:36,200 --> 00:27:37,440 rzeczy do rodzaju. 555 00:27:37,440 --> 00:27:40,730 Tak to jest jak go do tego konkretnego umieścić na serwerze. 556 00:27:40,730 --> 00:27:40,990 OK. 557 00:27:40,990 --> 00:27:45,730 >> Więc po prostu wybrał 1337. 558 00:27:45,730 --> 00:27:47,910 Istnieje cały szereg numerów , które można odebrać. 559 00:27:47,910 --> 00:27:50,390 To nie był całkowicie wyjątkowy. 560 00:27:50,390 --> 00:27:54,560 >> Ale co mam teraz zrobić jest Zamierzam uruchomić węzeł. 561 00:27:54,560 --> 00:27:59,730 Pozwól mi wejść, które faktycznie para linie w dół tak, że można go zobaczyć. 562 00:27:59,730 --> 00:28:03,130 Mam zamiar zrobić węzeł, a ja jestem zamierza uruchomić simpler.js. 563 00:28:03,130 --> 00:28:06,880 I będziemy rozmawiać o tym, jak uzyskać Węzeł ustawić w trochę. 564 00:28:06,880 --> 00:28:09,350 Ale teraz to jest po prostu uruchomienie serwera. 565 00:28:09,350 --> 00:28:14,360 >> Więc jedno możemy spróbować, które nie mogą być tak ekscytujące jest to możliwe w rzeczywistości 566 00:28:14,360 --> 00:28:16,300 spróbuj do niego dostęp w Curl. 567 00:28:16,300 --> 00:28:20,680 Więc można zrobić Curl, i moja Maszyna jest host lokalny. 568 00:28:20,680 --> 00:28:24,600 Zobaczysz również to napisane jak to czasami. 569 00:28:24,600 --> 00:28:29,810 Hosta lokalnego i 127.0.0.1 są mili o jak w domowym komputerze. 570 00:28:29,810 --> 00:28:33,180 Tak to jest jak rozmawiać z własnego komputera. 571 00:28:33,180 --> 00:28:33,760 OK. 572 00:28:33,760 --> 00:28:36,030 >> I wtedy mogę powiedzieć, 1337. 573 00:28:36,030 --> 00:28:39,630 Więc jeśli mogę uruchomić tej linii kodu, mówi hello world. 574 00:28:39,630 --> 00:28:44,050 A gdybym chciał zobaczyć te rzeczy, które miał zwykły tekst lub typu zawartości 575 00:28:44,050 --> 00:28:46,560 cokolwiek, może nawet umieścić to tutaj. 576 00:28:46,560 --> 00:28:48,810 I zauważyć, że nie mówi OK. 577 00:28:48,810 --> 00:28:50,810 I mam zwykły tekst. 578 00:28:50,810 --> 00:28:53,140 I jeszcze trochę to wszystko inne rzeczy będzie dodać, że węzeł w 579 00:28:53,140 --> 00:28:54,440 nie dla mnie. 580 00:28:54,440 --> 00:28:55,700 To nie jest bardzo ważne. 581 00:28:55,700 --> 00:28:58,230 >> To znaczy, że są jakieś techniczne aspekty, które są rodzajem AT 582 00:28:58,230 --> 00:29:02,280 cool o tym mówić, ale tak, aby pokazać ty, ja też mam prawo do 583 00:29:02,280 --> 00:29:03,070 zmienić te okolice. 584 00:29:03,070 --> 00:29:06,280 Więc może po prostu dodać kilka o takich rzeczach. 585 00:29:06,280 --> 00:29:11,780 I to teraz, kiedy patrzę na moje wyjście, to będzie to. 586 00:29:11,780 --> 00:29:19,740 Więc te nagłówki na myśli pewne rzeczy do przeglądarek i tego typu rzeczy. 587 00:29:19,740 --> 00:29:23,040 >> I można w zasadzie powiedzieć, nagłówki przeglądarkę jak reagować na coś. 588 00:29:23,040 --> 00:29:26,280 Jeśli kiedykolwiek słyszał ciasteczka wcześniej, lub jeśli kiedykolwiek był zirytowany 589 00:29:26,280 --> 00:29:29,330 przez stronę internetową, ustawienie ciasteczka, lub włączone ciasteczka lub bloku 590 00:29:29,330 --> 00:29:30,320 coś w tym stylu. 591 00:29:30,320 --> 00:29:33,040 Rzeczywiście można ustawić pliki cookie w tych nagłówków. 592 00:29:33,040 --> 00:29:36,990 Więc powiedzieć jak do przeglądarki Zachowanie w niektórych przypadkach. 593 00:29:36,990 --> 00:29:37,750 OK. 594 00:29:37,750 --> 00:29:40,310 >> Tak aby był simpler.js. 595 00:29:40,310 --> 00:29:42,780 Czy ktoś ma jakieś pytania na tym pliku z kodem źródłowym? 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 Fajne. 599 00:29:46,490 --> 00:29:50,780 >> Warto więc usunąć z tego r i spojrzeć na simple.js. 600 00:29:50,780 --> 00:29:53,010 Więc to jest dość dużo samego programu. 601 00:29:53,010 --> 00:29:56,030 Ja tylko napisałem to trochę inaczej bo chciałam sortować z podświetleniem 602 00:29:56,030 --> 00:29:57,850 niektóre funkcje JavaScriptu. 603 00:29:57,850 --> 00:30:03,880 >> Więc zauważyć, że program obsługi żądania Funkcja jest całkowicie zniknął. 604 00:30:03,880 --> 00:30:05,800 Oh Tak, nie masz pytanie? 605 00:30:05,800 --> 00:30:08,200 >> WIDOWNI: Tak, argumenty , które są przekazywane do tego 606 00:30:08,200 --> 00:30:10,120 funkcji, jakie one są? 607 00:30:10,120 --> 00:30:12,050 >> KEVIN SCHMID: To są JavaScript obiekty. 608 00:30:12,050 --> 00:30:15,230 W dokumentacji Node.js, to w zasadzie mówi, jakie metody są 609 00:30:15,230 --> 00:30:15,910 dostępny na nich. 610 00:30:15,910 --> 00:30:19,602 My akurat mają dostęp do Metoda ta nazywa się głowa i koniec zapisu 611 00:30:19,602 --> 00:30:20,730 i takie tam. 612 00:30:20,730 --> 00:30:22,590 Ale jest cała masa więcej metod. 613 00:30:22,590 --> 00:30:27,670 >> I na przykład, jak jedna z nich w szczególności na rec, można to zrobić 614 00:30:27,670 --> 00:30:34,540 coś rec.method które będą powiedzieć, czy jest to GET lub 615 00:30:34,540 --> 00:30:36,780 Żądania HTTP POST i takie rzeczy. 616 00:30:36,780 --> 00:30:39,100 Więc nie wszystkie rodzaje różne właściwości, ale są zarówno 617 00:30:39,100 --> 00:30:42,560 JavaScript obiekty, a oni po prostu funkcje związane z nimi, że ci 618 00:30:42,560 --> 00:30:43,850 można napisać rzeczy. 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> Więc zauważyć, że procedury obsługi żądania jest całkowicie zniknął. 621 00:30:49,030 --> 00:30:52,650 Ale kod, który miałem na życzenie Ładowarka jest nadal. 622 00:30:52,650 --> 00:30:56,520 I jeszcze ten res.writeHead i nadal mam ten res.end. 623 00:30:56,520 --> 00:31:00,270 I co jest przykładem, w JavaScript jest idea 624 00:31:00,270 --> 00:31:01,460 anonim funkcja. 625 00:31:01,460 --> 00:31:04,180 i anonimowo jest jak imię dopasowania dla niej, bo dosłownie nie 626 00:31:04,180 --> 00:31:05,180 mieć nazwę. 627 00:31:05,180 --> 00:31:07,900 Wniosek nie ma funkcji obsługi w środku. 628 00:31:07,900 --> 00:31:10,110 >> Nie ma nazwy, ale nadal to biorąc argument. 629 00:31:10,110 --> 00:31:12,250 Więc nadal mam rec i res. 630 00:31:12,250 --> 00:31:16,180 I nadal mam kod. 631 00:31:16,180 --> 00:31:18,930 To jest w porządku Kod JavaScript. 632 00:31:18,930 --> 00:31:22,540 Więc mogę zadeklarować funkcji bez wyraźnie dając mu nazwę. 633 00:31:22,540 --> 00:31:24,250 Jest to trochę mylące na początku. 634 00:31:24,250 --> 00:31:26,230 Istnieje kilka przydatnych rzeczy, takich jak , które można zrobić z 635 00:31:26,230 --> 00:31:28,450 te funkcje anonimowe. 636 00:31:28,450 --> 00:31:32,100 Czy ktoś ma jakieś pytania na temat tego, czy jest to OK, po prostu, na razie, 637 00:31:32,100 --> 00:31:34,130 jakby po prostu przyjąć, że będzie zrobić to samo? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 Tak? 640 00:31:37,125 --> 00:31:38,680 >> PUBLICZNOŚCI: Czy najpierw funkcje klasy w JavaScript? 641 00:31:38,680 --> 00:31:41,020 >> KEVIN SCHMID: Są pierwsze klasy w JavaScript. 642 00:31:41,020 --> 00:31:45,490 I po prostu wiem, że te koncepcje przechodząc w anonimowej funkcji takich jak 643 00:31:45,490 --> 00:31:49,600 stosuje się do tego, że JavaScript może napisać w swoim końcowym projektu dla 644 00:31:49,600 --> 00:31:51,260 przeglądarka też. 645 00:31:51,260 --> 00:31:56,700 Tak na przykład w JavaScript na Twoja przeglądarka, jest również nieco wydarzenie 646 00:31:56,700 --> 00:32:00,680 napędzany w tym sensie, że to, co będziesz ma to, gdy użytkownik kliknie ten 647 00:32:00,680 --> 00:32:02,640 przycisk, chcę uruchomić ten kod. 648 00:32:02,640 --> 00:32:07,070 >> Więc to jest ten sam rodzaj idei po stronie klienta, gdy przycisk myszy lub ich 649 00:32:07,070 --> 00:32:09,870 myszkę jakiegoś obrazu na strona www, uruchomić ten kod. 650 00:32:09,870 --> 00:32:11,350 Które mogą mieć zastosowanie do serwerów. 651 00:32:11,350 --> 00:32:16,380 Więc to jest trochę jak ekscytujące Powodem, dla którego obsługa JavaScript jest naprawdę 652 00:32:16,380 --> 00:32:19,810 odpowiednie lub niektórzy ludzie uważają, że to odpowiedni język dla tego rodzaju 653 00:32:19,810 --> 00:32:22,530 Serwer kierowca wydarzenie, ponieważ masz te funkcje anonimowe. 654 00:32:22,530 --> 00:32:26,150 Masz cały pomysł kod asynchroniczny. 655 00:32:26,150 --> 00:32:27,060 OK. 656 00:32:27,060 --> 00:32:30,360 Ktoś ma jakieś pytania? 657 00:32:30,360 --> 00:32:30,470 >> OK. 658 00:32:30,470 --> 00:32:33,440 Tak aby był simple.js. 659 00:32:33,440 --> 00:32:38,070 Więc spójrzmy na jeden lub kilka. 660 00:32:38,070 --> 00:32:42,040 Więc to jest sleep.js. 661 00:32:42,040 --> 00:32:47,160 Więc jest ktoś zna sen funkcja C? 662 00:32:47,160 --> 00:32:50,936 Od Może jeden z wcześniejszych wykładów lub coś w tym stylu? 663 00:32:50,936 --> 00:32:54,650 >> Więc w zasadzie można przekazać w myślę Liczba sekund, lub jeśli używasz U 664 00:32:54,650 --> 00:32:57,080 spać kilka milisekund lub nanosekund. 665 00:32:57,080 --> 00:33:00,450 I w zasadzie program po prostu przestać działa w tym czasie. 666 00:33:00,450 --> 00:33:01,280 Prawda? 667 00:33:01,280 --> 00:33:06,970 I to będzie obudzić w końcu i Pokochasz to po prostu nadal działa 668 00:33:06,970 --> 00:33:08,340 Program. 669 00:33:08,340 --> 00:33:12,740 >> Więc to jakby daje serwer Wrażenie spania. 670 00:33:12,740 --> 00:33:17,580 Więc zauważyć, że mamy takie same res.writeHead 200 w nagłówku, jako 671 00:33:17,580 --> 00:33:22,130 wcześniej, ale wtedy to my dzwoniąc Funkcja o nazwie zestaw limit czasu. 672 00:33:22,130 --> 00:33:26,170 Ustaw limit czasu jest również dostępna w Twoja przeglądarka Google Chrome 673 00:33:26,170 --> 00:33:28,000 lub Safari lub cokolwiek. 674 00:33:28,000 --> 00:33:31,720 I w zasadzie to, co tu robi jest to biorąc w funkcji. 675 00:33:31,720 --> 00:33:33,360 Wskazówka, ponownie, jest to anonim funkcja. 676 00:33:33,360 --> 00:33:36,310 Więc to jest całkiem fajne, ponieważ jesteśmy za pomocą anonimowej funkcji w 677 00:33:36,310 --> 00:33:38,950 funkcja anonimowa, które może być trochę dziwne. 678 00:33:38,950 --> 00:33:42,270 >> Ale to nic przy tej funkcji, która jest właściwie mówiąc - i tym sposobem 679 00:33:42,270 --> 00:33:47,430 Prace w 5000 milisekund, chcę można wykonać tej funkcji, która 680 00:33:47,430 --> 00:33:50,830 po prostu się kończy i pisze hej odpowiedź. 681 00:33:50,830 --> 00:33:56,730 Więc to sprawia wrażenie jakby śpi, ale sposób ten faktycznie 682 00:33:56,730 --> 00:33:59,780 działa to będziemy działać przez ta linia bardzo szybko. 683 00:33:59,780 --> 00:34:01,190 Po prostu coś pisze. 684 00:34:01,190 --> 00:34:03,780 A potem my także uruchomić poprzez ta linia bardzo szybko. 685 00:34:03,780 --> 00:34:08,620 Więc nie jesteśmy naprawdę dzieje czekać pięć sekund. 686 00:34:08,620 --> 00:34:11,370 Jesteśmy po prostu będzie działać kod natychmiast. 687 00:34:11,370 --> 00:34:14,219 >> A jeszcze, znowu, to mało pętla zdarzeń, które teraz ma to coś 688 00:34:14,219 --> 00:34:17,570 Rejestry, że w zasadzie jest tylko ciągle dzieje się w kółko 689 00:34:17,570 --> 00:34:21,620 i patrząc na zegar w pojedynczym nici i powiedzenie, ma pięć sekund 690 00:34:21,620 --> 00:34:22,360 Jeszcze przeszedł? 691 00:34:22,360 --> 00:34:26,409 I wtedy, gdy widzi, że drugi ręka przeniosła jak pięć sekund lub 692 00:34:26,409 --> 00:34:29,190 cokolwiek, to budzi się i mówi: Och, co mam robić? 693 00:34:29,190 --> 00:34:30,350 Oh mam uruchomić ten kod. 694 00:34:30,350 --> 00:34:33,110 I wtedy to się uruchomić res.end hej. 695 00:34:33,110 --> 00:34:35,360 >> Więc znowu, my nigdy tu czeka. 696 00:34:35,360 --> 00:34:38,590 Więc nie jest to, że ten kod wewnątrz funkcja ta zajmie pięć 697 00:34:38,590 --> 00:34:39,900 sekund, aby uruchomić. 698 00:34:39,900 --> 00:34:43,090 Ten kod będzie działać prawie natychmiast, co najmniej w odniesieniu do 699 00:34:43,090 --> 00:34:46,139 pięć sekund, które Rozmawialiśmy o wcześniej przed. 700 00:34:46,139 --> 00:34:52,100 >> Tak po prostu pokazać w działaniu, Mogę zrobić Node.sleep.js. 701 00:34:52,100 --> 00:34:55,159 I coś zrobiłem bałagan? 702 00:34:55,159 --> 00:34:56,310 Być może. 703 00:34:56,310 --> 00:34:57,410 Przepraszam. 704 00:34:57,410 --> 00:34:59,530 Zobaczmy, co możemy zrobić, aby to naprawić. 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 Więc na pewno korzystać Node.js. 709 00:35:17,464 --> 00:35:19,440 Ja tylko żartowałem. 710 00:35:19,440 --> 00:35:19,570 OK. 711 00:35:19,570 --> 00:35:20,820 Chwileczkę. 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 Wiem, co to jest. 715 00:35:29,130 --> 00:35:34,440 >> Więc problem jest to, że w mojej drugiej karcie tutaj, byłem już na prowadzenie Node 716 00:35:34,440 --> 00:35:36,590 że sam adres, 1337. 717 00:35:36,590 --> 00:35:43,370 Więc błąd, że rzucił, jeśli spojrzymy w nim prawdziwy ściśle, to adres w 718 00:35:43,370 --> 00:35:45,180 używać, EADDRINUSE. 719 00:35:45,180 --> 00:35:47,970 Tak było już z 1337 tutaj. 720 00:35:47,970 --> 00:35:52,210 Więc jeśli zamknę ten off, a ja teraz spróbuj uruchomić to, miejmy nadzieję, że wszystko, 721 00:35:52,210 --> 00:35:53,210 będzie dobrze. 722 00:35:53,210 --> 00:35:53,440 OK. 723 00:35:53,440 --> 00:35:57,020 Więc można mieć tylko jedno sortowanie słuchać na porcie na raz. 724 00:35:57,020 --> 00:35:59,660 Innym rozwiązaniem byłoby dla mnie po prostu zmienić ten program i dokonać 725 00:35:59,660 --> 00:36:02,370 to jak 1338 czy coś tak. 726 00:36:02,370 --> 00:36:04,100 >> Ale teraz sen działa. 727 00:36:04,100 --> 00:36:06,400 Więc właściwie go wypróbować w Przeglądarka tym razem dlatego, że jest 728 00:36:06,400 --> 00:36:09,080 trochę nieciekawe, aby zobaczyć że w terminalu. 729 00:36:09,080 --> 00:36:13,560 Więc mam zamiar iść do tego 127 adres ponownie w 1337. 730 00:36:13,560 --> 00:36:14,850 I czy można go zobaczyć - 731 00:36:14,850 --> 00:36:18,050 Nie wiem, czy można - ale moja przeglądarki biorąc bardzo, bardzo długo 732 00:36:18,050 --> 00:36:20,600 Czas ładowania lub jak pięć sekund. 733 00:36:20,600 --> 00:36:23,460 >> A potem, że to w końcu zakończył odpowiedź. 734 00:36:23,460 --> 00:36:29,070 I nie można go zobaczyć, ponieważ sprawa zostanie przeniesiony na mały, ale jeśli zrobię 735 00:36:29,070 --> 00:36:32,500 to trochę mniejszy, to widzę mówi hej. 736 00:36:32,500 --> 00:36:35,130 Więc mam hej, ale po pięciu sekundach. 737 00:36:35,130 --> 00:36:38,510 I to może być trochę czystsze, aby zobaczyć to tutaj, na terminalu, więc jestem 738 00:36:38,510 --> 00:36:40,980 zrobić - 739 00:36:40,980 --> 00:36:43,540 zróbmy tu - 740 00:36:43,540 --> 00:36:48,370 zróbmy Curl tym adresem ponownie z 1337. 741 00:36:48,370 --> 00:36:50,820 A ja po prostu rodzaj siedzieć o pięć sekund. 742 00:36:50,820 --> 00:36:53,760 Ale zauważ, że serwer może przyjąć nowych rozwiązań. 743 00:36:53,760 --> 00:36:54,940 Tak drukuje to hej. 744 00:36:54,940 --> 00:36:58,720 >> I demo to, w zasadzie, co Co mogę zrobić w tej drugiej zakładce - 745 00:36:58,720 --> 00:37:02,640 Więc powiedzmy, zrobić to w innej karty, Mam zamiar zrobić to samo Curl 746 00:37:02,640 --> 00:37:03,780 sprawa ponownie. 747 00:37:03,780 --> 00:37:06,600 I mam zamiar spróbować je kopnąć facetów w tym samym czasie. 748 00:37:06,600 --> 00:37:08,260 Więc mam zamiar to zrobić, a ja jestem będzie ścigać tutaj i jestem 749 00:37:08,260 --> 00:37:09,650 zamiar zrobić to jeszcze raz. 750 00:37:09,650 --> 00:37:14,030 >> I zróbmy to tak, że widzę ich obu. 751 00:37:14,030 --> 00:37:20,250 Że jeden drukowane hej, a jeden wydrukowane hej wszystkim sposobem na - 752 00:37:20,250 --> 00:37:22,550 Zróbmy to eksperyment ponownie. 753 00:37:22,550 --> 00:37:25,100 Właściwie, użyjmy tego oszukać, czy to jest OK. 754 00:37:25,100 --> 00:37:30,520 >> Więc mam zamiar używać powłoki, że coś Pozwala mi to w zasadzie uruchomić dwie kopie 755 00:37:30,520 --> 00:37:32,630 tego programu równolegle. 756 00:37:32,630 --> 00:37:36,070 Więc to uruchomić pierwszy program i Drugi program równolegle. 757 00:37:36,070 --> 00:37:39,060 Więc teraz, jeśli klawisz Enter, to będzie aby wniosek ten dość dużo 758 00:37:39,060 --> 00:37:40,570 natychmiast w tym samym czasie. 759 00:37:40,570 --> 00:37:42,620 Więc dajmy tę szansę. 760 00:37:42,620 --> 00:37:44,950 >> Więc teraz zauważyć, że mówi dwa procesy. 761 00:37:44,950 --> 00:37:50,630 A jeśli jesteś ciekawy, że 27000 Numer ID jest w zasadzie procesem. 762 00:37:50,630 --> 00:37:52,940 A następnie zauważyć, że wydrukowana Cześć w tym samym czasie. 763 00:37:52,940 --> 00:37:56,820 To nie było tak, że trzeba było czekać pięć sekund dla jednego i następnie po tym, 764 00:37:56,820 --> 00:37:59,640 pięć sekund później dostać drugą. 765 00:37:59,640 --> 00:38:03,300 Więc to rodzaj, w pewnym sensie, jest to naprawdę nie dowody, ale to 766 00:38:03,300 --> 00:38:07,390 Intuicyjny dowód, że nie jest to tylko jak czeka pięć sekund, a blokowanie 767 00:38:07,390 --> 00:38:08,960 Cały wątek. 768 00:38:08,960 --> 00:38:10,720 OK, fajnie. 769 00:38:10,720 --> 00:38:17,850 >> Więc Aaron zadał pytanie wcześniej, że było dobrze, co, jeśli mamy coś zrobić - 770 00:38:17,850 --> 00:38:18,735 Tak? 771 00:38:18,735 --> 00:38:19,051 >> PUBLICZNOŚCI: Czekaj. 772 00:38:19,051 --> 00:38:21,585 Jak to, że różni się od Bufor printf, choć? 773 00:38:21,585 --> 00:38:23,010 Nie jest automatycznie zrobić? 774 00:38:23,010 --> 00:38:25,390 Dlaczego musimy się o to martwić? 775 00:38:25,390 --> 00:38:26,555 >> KEVIN SCHMID: Och, mogłeś powiedzieć to jeszcze raz? 776 00:38:26,555 --> 00:38:29,510 >> PUBLICZNOŚCI: nie lubi bufora printf zrobić dokładnie to samo? 777 00:38:29,510 --> 00:38:31,280 >> KEVIN SCHMID: bufor printf? 778 00:38:31,280 --> 00:38:32,753 >> PUBLICZNOŚCI: Tak. 779 00:38:32,753 --> 00:38:33,244 OK. 780 00:38:33,244 --> 00:38:40,609 Nie był w jednym z quizów były one mówi o tym, jak, jeśli prawo printf 781 00:38:40,609 --> 00:38:42,899 coś, a potem się go wstrzymać jeden drugi, a potem trzeba go pętli dziesięć 782 00:38:42,899 --> 00:38:46,530 razy, to będzie odczekać dziesięć sekund, a następnie printf wszystko razem? 783 00:38:46,530 --> 00:38:47,460 >> KEVIN SCHMID: Oh, OK. 784 00:38:47,460 --> 00:38:49,170 >> PUBLICZNOŚCI: Czy to jest ten sam co to w tym przypadku? 785 00:38:49,170 --> 00:38:52,630 >> KEVIN SCHMID: Więc pytanie zasadzie w jednym z poprzednich konkursach 786 00:38:52,630 --> 00:38:57,200 czy coś, nie było wątpliwości, że w zasadzie jeśli powiesz drukującej F 10 787 00:38:57,200 --> 00:39:01,490 rzeczy na raz, a potem spałem jak w Proces drukowania ci się, 788 00:39:01,490 --> 00:39:04,850 w końcu z jakiegoś powodu, to by tylko zrzucić te wszystkie na ekranie. 789 00:39:04,850 --> 00:39:06,740 Więc trochę się z dwóch różnych koncepcje tutaj. 790 00:39:06,740 --> 00:39:10,400 >> Sądzę więc, że jedną rzeczą jest to, że w tym przypadku mamy do czynienia z dwoma różnymi 791 00:39:10,400 --> 00:39:13,510 rodzaj ludzi pyta serwer rzeczy w tym samym czasie. 792 00:39:13,510 --> 00:39:17,455 I dlatego, że z tego rodzaju printf i tak czeka to wszystko zrzuca 793 00:39:17,455 --> 00:39:21,760 co raz to bardziej związane z jaki rodzaj printf z - 794 00:39:21,760 --> 00:39:25,100 tak jest w rzeczywistości sposobem printf realizowane jest to w zasadzie ma do 795 00:39:25,100 --> 00:39:28,850 porozmawiać z systemem operacyjnym napisać że rzeczy do konsoli. 796 00:39:28,850 --> 00:39:33,460 Więc nie chcę zrobić wszystko, że rzeczy natychmiast, kiedy mówisz printf 797 00:39:33,460 --> 00:39:36,260 niektóre ciąg ponieważ mogłoby uzyskać drogie, jeśli ma się do 798 00:39:36,260 --> 00:39:37,340 zrobić to za każdym razem. 799 00:39:37,340 --> 00:39:41,530 >> Więc jeśli nie printf hej, program może faktycznie wydrukować, że nie 800 00:39:41,530 --> 00:39:43,040 bezpośrednio do konsoli. 801 00:39:43,040 --> 00:39:46,080 Może powiedzieć, OK, napisałem go. 802 00:39:46,080 --> 00:39:49,570 A następnie rodzaj czekać, aby dać to trochę więcej, zanim rzeczywiście 803 00:39:49,570 --> 00:39:51,380 pisanie go do konsoli. 804 00:39:51,380 --> 00:39:54,040 >> Tak dlatego, że to był przypadek - 805 00:39:54,040 --> 00:39:56,450 i jest to rodzaj niezwiązane do snu - 806 00:39:56,450 --> 00:40:00,060 jest to, że sen był jakby tylko wtryskiwany jest wykazanie 807 00:40:00,060 --> 00:40:02,480 Fakt, że nie ma zapisu to synchronicznie. 808 00:40:02,480 --> 00:40:06,210 Ale powodem, że jest po prostu wydajność, dzięki czemu nie trzeba 809 00:40:06,210 --> 00:40:08,920 sprawiają, że wiele kontaktów system operacyjny. 810 00:40:08,920 --> 00:40:12,300 >> Ale tutaj, co tak naprawdę próbujemy zrobić z tego snu rzeczy jest po prostu pokaż 811 00:40:12,300 --> 00:40:17,730 że gdy mamy dwie osoby odwiedzające Strona ta, to nie będzie umieścić 812 00:40:17,730 --> 00:40:22,310 je w linii, gdzie to powie Mam ci pomóc, a potem, kiedy jestem 813 00:40:22,310 --> 00:40:25,350 całkowicie wykończone pomaga po nich pięć sekund, a następnie zamierzam 814 00:40:25,350 --> 00:40:26,750 przejść do następnej osoby. 815 00:40:26,750 --> 00:40:29,515 Więc wniosek pierwszej osobie nie robi związać się tej pętli zdarzeń 816 00:40:29,515 --> 00:40:31,610 czy to ma sens. 817 00:40:31,610 --> 00:40:34,980 >> Ale tutaj jest rzeczywiście przykładem czegoś, co będzie tie 818 00:40:34,980 --> 00:40:36,090 do pętli zdarzeń. 819 00:40:36,090 --> 00:40:39,130 Więc tu jest straszna funkcja obliczyć n-ty Fibonacciego. 820 00:40:39,130 --> 00:40:43,510 Jest to dosłownie gorzej sposób można obliczyć n-tą liczbę Fibonacciego. 821 00:40:43,510 --> 00:40:48,480 I to jest właściwie tylko do uznania gdzie to pochodzi, 822 00:40:48,480 --> 00:40:49,330 Jest rzeczywiście - 823 00:40:49,330 --> 00:40:53,230 To znaczy, można spróbować go znaleźć - ale tam jest jak bardzo długiego bloga 824 00:40:53,230 --> 00:40:54,130 zakładać, że ktoś napisał. 825 00:40:54,130 --> 00:40:55,660 To jest jak jedna z tych rzeczy, Reddit. 826 00:40:55,660 --> 00:40:59,650 Ale ktoś skrytykował Node.js i tym, że stosuje się jako przykład. 827 00:40:59,650 --> 00:41:03,700 Więc niby chciał tylko pokazać dwa różne perspektywy, aby dostać 828 00:41:03,700 --> 00:41:07,320 ogólne rozumienie pojęć za te dwie rzeczy. 829 00:41:07,320 --> 00:41:13,050 >> Ale to jest tylko wybrana jako straszne, strasznie nieskuteczny obliczeniowo 830 00:41:13,050 --> 00:41:15,940 intensywny sposób obliczyć n-ta liczba Fibonacciego. 831 00:41:15,940 --> 00:41:21,180 Więc tak na marginesie, dlaczego to straszne jak w jeden sposób? 832 00:41:21,180 --> 00:41:23,210 Tak? 833 00:41:23,210 --> 00:41:25,130 >> PUBLICZNOŚCI: Kontaktując się rozpocząć się z 1000. 834 00:41:25,130 --> 00:41:27,050 1000 dzieli się na 999 i 998. 835 00:41:27,050 --> 00:41:28,970 Każdy to dzieli się na dwie rzeczy. 836 00:41:28,970 --> 00:41:30,890 Każdy to dzieli się na dwie rzeczy. 837 00:41:30,890 --> 00:41:31,355 >> KEVIN SCHMID: Prawo. 838 00:41:31,355 --> 00:41:32,400 >> W rynku: w dół. 839 00:41:32,400 --> 00:41:32,840 >> KEVIN SCHMID: Dokładnie. 840 00:41:32,840 --> 00:41:37,330 Więc po prostu powtórzyć do kamery, jeśli zadzwoń fib na jak 1000 czy coś 841 00:41:37,330 --> 00:41:41,810 tak, to nie jest oczywiście mniej niż lub równa jeden, więc mam zamiar 842 00:41:41,810 --> 00:41:46,040 Do tej sprawy jeszcze, a potem idę zadzwonić fib 999 oraz fib 998. 843 00:41:46,040 --> 00:41:50,290 A potem prawie wszystkie, które Prace, które nie jest fib 999 844 00:41:50,290 --> 00:41:52,950 rodzaj na tym poziomie. 845 00:41:52,950 --> 00:41:55,620 Jeśli pójdziesz, to jeszcze bardziej zbędne niż to, ale jeśli tylko 846 00:41:55,620 --> 00:42:01,390 myślę obliczania fib 998 dostaje nam całkiem blisko fib 999. 847 00:42:01,390 --> 00:42:05,860 Powinniśmy więc być naprawdę niewiele więcej mądry o tym, jak to za ponowne 848 00:42:05,860 --> 00:42:07,580 nich, ale nie jesteśmy ponowne te rzeczy w ogóle. 849 00:42:07,580 --> 00:42:11,860 Więc można sobie wyobrazić, to gigantyczna, gigantyczne drzewo, które jest po prostu straszne. 850 00:42:11,860 --> 00:42:12,940 >> Ale i tak, OK. 851 00:42:12,940 --> 00:42:14,040 Tak aby był fib. 852 00:42:14,040 --> 00:42:15,530 To po prostu zajmuje trochę czasu, aby uruchomić. 853 00:42:15,530 --> 00:42:16,510 Tak? 854 00:42:16,510 --> 00:42:17,760 >> PUBLICZNOŚCI: [niesłyszalne]. 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVIN SCHMID: Och, mogłeś powtórzyć pytanie? 857 00:42:22,481 --> 00:42:23,731 >> PUBLICZNOŚCI: [niesłyszalne]. 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVIN SCHMID: Och tak, to jest tylko kod że będzie to coś w rodzaju na 860 00:42:33,990 --> 00:42:34,850 po stronie serwera. 861 00:42:34,850 --> 00:42:38,100 Więc to nie będzie można znaleźć w przeglądarce lub cokolwiek. 862 00:42:38,100 --> 00:42:42,160 Jest to w zasadzie to, co mamy jest to, że gdy użytkownik tutaj dość dużo marki 863 00:42:42,160 --> 00:42:45,300 ich wniosek ponownie, gdy rodzaj złożyć wniosek, będziemy nazywać 864 00:42:45,300 --> 00:42:47,040 Funkcja ta po stronie serwera. 865 00:42:47,040 --> 00:42:50,480 I wtedy będziemy mieć wynik z powrotem z wywołaniem tej funkcji. 866 00:42:50,480 --> 00:42:52,460 A potem po prostu wydrukować go do użytkownika. 867 00:42:52,460 --> 00:42:54,580 Tak więc użytkownik nie ma tak naprawdę do czynienia z tej funkcji zbyt wiele. 868 00:42:54,580 --> 00:42:57,270 >> Czy to pytanie? 869 00:42:57,270 --> 00:42:58,470 Czy to ma sens? 870 00:42:58,470 --> 00:42:58,810 OK. 871 00:42:58,810 --> 00:43:00,930 Fajne. 872 00:43:00,930 --> 00:43:04,240 >> Więc znowu, robimy to cały res.writeHead co, gdzie wydrukować 873 00:43:04,240 --> 00:43:05,150 nagłówek. 874 00:43:05,150 --> 00:43:09,730 A potem zakończyć odpowiedź wykonując magiczna liczba jest fib 45. 875 00:43:09,730 --> 00:43:12,100 Więc po prostu uruchomić ten serwer. 876 00:43:12,100 --> 00:43:15,190 Więc mam zamiar zrobić fib.js. węzłów 877 00:43:15,190 --> 00:43:17,340 Więc teraz mój serwer fib jest uruchomiony. 878 00:43:17,340 --> 00:43:21,790 >> I to tutaj, będę wykonać jedną z nich. 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 Więc mam zamiar powiedzieć, Curl. 881 00:43:24,960 --> 00:43:32,226 Więc to zajmie trochę czasu, ale miejmy nadzieję, że wkrótce będzie to zakończyć i 882 00:43:32,226 --> 00:43:35,660 zostanie wydrukowana, że ​​45th Fibonacci numer. 883 00:43:35,660 --> 00:43:36,910 >> PUBLICZNOŚCI: [niesłyszalne]. 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVIN SCHMID: Powinien się zrobić dość szybko. 886 00:43:42,050 --> 00:43:43,780 Więc powinien podjąć 05:55 sekund. 887 00:43:43,780 --> 00:43:48,570 Nie wiem, to tylko V8 jest bardzo szybko, w każdym przypadku jest 888 00:43:48,570 --> 00:43:52,700 bardzo krótki przykład i celowo nieeleganckie z nietrywialne 889 00:43:52,700 --> 00:43:54,200 obliczeń. 890 00:43:54,200 --> 00:43:56,700 Więc po chwili robi się to. 891 00:43:56,700 --> 00:44:02,130 >> Ale teraz, co mam zrobić, jeśli sam rodzaj Eksperyment, jak wcześniej, gdzie zrobić 892 00:44:02,130 --> 00:44:04,010 dwa wnioski w tym samym czasie? 893 00:44:04,010 --> 00:44:06,990 Więc idę do zagięcia że adres, i zamierzam 894 00:44:06,990 --> 00:44:08,260 aby zrobić kolejny Curl. 895 00:44:08,260 --> 00:44:12,070 I pamiętaj, kiedy zrobiliśmy to dla spać serwer, gdy w zasadzie było to 896 00:44:12,070 --> 00:44:15,320 po pięciu sekundach, ale dość znacznie zarówno wrócił tuż 897 00:44:15,320 --> 00:44:16,380 w tym samym czasie. 898 00:44:16,380 --> 00:44:18,650 Więc to nie był szczególnie związany. 899 00:44:18,650 --> 00:44:20,290 >> Ale spróbujmy go teraz. 900 00:44:20,290 --> 00:44:22,370 OK, więc dostaliśmy dwa procesy. 901 00:44:22,370 --> 00:44:24,210 Pamiętaj, to są identyfikatory procesów. 902 00:44:24,210 --> 00:44:25,900 To będzie trochę niewygodne, a my stoisko. 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 Więc po prostu zostać tutaj i czekać. 905 00:44:35,360 --> 00:44:37,090 >> Tak więc jeden z nich powinno pochodzić powrót po jak - 906 00:44:37,090 --> 00:44:39,190 OK, więc jeden wrócił. 907 00:44:39,190 --> 00:44:43,570 Ale to dlaczego nie drugi jedna tylko jeszcze wróci? 908 00:44:43,570 --> 00:44:44,389 Tak? 909 00:44:44,389 --> 00:44:49,280 >> PUBLICZNOŚCI: serwer nie może nic zrobić podczas jego obliczania, że ​​duża liczba. 910 00:44:49,280 --> 00:44:51,620 >> KEVIN SCHMID: Prawo. 911 00:44:51,620 --> 00:44:55,395 Więc odpowiedź była po prostu, że serwer naprawdę nie można nic zrobić, gdy 912 00:44:55,395 --> 00:44:57,460 to obliczania tej liczby Fibonacciego. 913 00:44:57,460 --> 00:44:59,360 Więc teraz po prostu mam swoje dwie rzeczy z powrotem. 914 00:44:59,360 --> 00:45:03,210 Ale myślę, że po prostu myśleć o kodzie trochę więcej, jak to działa 915 00:45:03,210 --> 00:45:05,030 i wszystko. 916 00:45:05,030 --> 00:45:11,750 >> Więc ta funkcja jest tu kod Mówiłem to serwer, aby uruchomić, gdy 917 00:45:11,750 --> 00:45:14,100 otrzymuje nowe żądanie przychodzące. 918 00:45:14,100 --> 00:45:17,940 Więc to po prostu będzie działać przez to Cały kod, a potem to się udać 919 00:45:17,940 --> 00:45:21,120 Powrót do pętli zdarzeń, a następnie kontynuować sprawdzania nowych wydarzeń. 920 00:45:21,120 --> 00:45:23,670 Więc w zasadzie to, co dzieje się Jest to serwer 921 00:45:23,670 --> 00:45:25,080 słuchać nowych rzeczy. 922 00:45:25,080 --> 00:45:28,070 Pierwsza osoba zwraca się na to, co 45 jest. 923 00:45:28,070 --> 00:45:30,490 Możemy uruchomić ten kod, aby ją obliczyć. 924 00:45:30,490 --> 00:45:33,420 Kod ten trwa mniej więcej pięć sześć sekund, aby uruchomić. 925 00:45:33,420 --> 00:45:36,990 Następnie wracamy do pętli zdarzeń i sprawdzić nowe wnioski. 926 00:45:36,990 --> 00:45:42,700 >> Więc jest to przykład na to, jak, jeśli mają rzeczy, które są tak zwane obliczyć 927 00:45:42,700 --> 00:45:48,140 związany, lub korzystać z wielu obliczeniowych, nie moc, ale jak to 928 00:45:48,140 --> 00:45:50,260 obliczeniowo - 929 00:45:50,260 --> 00:45:54,080 Myślę, że jedna rzecz do powiedzenia na ten temat jest że ta funkcja ma się całkowicie, 930 00:45:54,080 --> 00:45:56,310 w większości przypadków całkiem użyteczne prawo pracy. 931 00:45:56,310 --> 00:45:59,970 Cały czas, że zwrotna funkcja została uruchomiona, to było dość 932 00:45:59,970 --> 00:46:03,670 dużo spędzać większość czasu po prostu computing, że n-ta liczba Fibonacciego. 933 00:46:03,670 --> 00:46:05,930 >> Ale mieliśmy tylko jeden wątek do czynienia. 934 00:46:05,930 --> 00:46:10,270 W modelu Apache, gdy dwie osoby zwrócił się z wnioskiem, aby uzyskać fib 45, my 935 00:46:10,270 --> 00:46:11,610 miałaby dwa różne tematy. 936 00:46:11,610 --> 00:46:15,060 A następnie praca w systemie operacyjnym byłby, lub poziom użytkownika 937 00:46:15,060 --> 00:46:18,660 Kod, który zarządza wątki, by się było pokroić, że się na 938 00:46:18,660 --> 00:46:23,060 CPU, a nawet jeśli miał wielu procesorów, rozpowszechniać je równomiernie na CPU 939 00:46:23,060 --> 00:46:26,130 tak, że oboje byli wykończenie w przybliżeniu w tym samym czasie. 940 00:46:26,130 --> 00:46:31,120 >> Więc po prostu pokazać, w jaki sposób możemy rozwiązać z - i nie jest całkowita doskonałe 941 00:46:31,120 --> 00:46:34,280 rozwiązanie, ale coś w rodzaju, jak to możliwe aby tu wrócić i zrobić 942 00:46:34,280 --> 00:46:35,880 trochę lepiej. 943 00:46:35,880 --> 00:46:41,540 Więc co mam tutaj jest program o nazwie Fib C. I to w zasadzie używa 944 00:46:41,540 --> 00:46:45,690 jeszcze jeden z modułów o nazwie węzła Moduł procesu potomnego. 945 00:46:45,690 --> 00:46:49,210 Więc podaję, że na górnym rodzaju o jak ja bym funta obejmują 946 00:46:49,210 --> 00:46:51,230 process.h dziecko lub coś. 947 00:46:51,230 --> 00:46:56,210 Teraz mam dostęp do tej zmiennej CP który ma wszystkie moje funkcje. 948 00:46:56,210 --> 00:47:01,810 >> Więc teraz to, co robię w tej odpowiedzi Ładowarka jest Używam tego programu 949 00:47:01,810 --> 00:47:04,100 kropka slash fib 45. 950 00:47:04,100 --> 00:47:06,820 Więc co zrobiłem - i mam zamiar wyjść z tego programu dla 951 00:47:06,820 --> 00:47:07,620 trochę - 952 00:47:07,620 --> 00:47:11,060 jest Napisałem program w C, który zasadniczo oblicza 953 00:47:11,060 --> 00:47:12,630 n-ta liczba Fibonacciego. 954 00:47:12,630 --> 00:47:15,960 Więc tutaj jest tylko program pisałem w C, który oblicza tego. 955 00:47:15,960 --> 00:47:19,040 Mogę go skompilować i mogę uruchomić to w wierszu poleceń. 956 00:47:19,040 --> 00:47:22,150 I to się dzieje, aby obliczyć Numer 45th Fibonacciego. 957 00:47:22,150 --> 00:47:24,510 >> Więc zauważyć, że właśnie trwa prawie tak długo. 958 00:47:24,510 --> 00:47:28,240 Prawdopodobnie mógł użyć myślnika 03 do zoptymalizować go, czy coś w tym stylu, 959 00:47:28,240 --> 00:47:31,050 ale ja po prostu tak jak regularne Ustawienia kompilatora. 960 00:47:31,050 --> 00:47:33,260 I drukuje go. 961 00:47:33,260 --> 00:47:36,830 >> Ale teraz, co mam niby zrobić? 962 00:47:36,830 --> 00:47:39,800 Och przepraszam, źle plik. 963 00:47:39,800 --> 00:47:42,800 Więc robię te same rzeczy z nagłówek, jak wcześniej. 964 00:47:42,800 --> 00:47:45,780 Następnie zrobić to cp.exec. 965 00:47:45,780 --> 00:47:49,460 Więc co to będzie zrobić, to jest to zamierza uruchomić ten program. 966 00:47:49,460 --> 00:47:51,960 Ale sposób jest to, że to działa to nie będzie czekać na 967 00:47:51,960 --> 00:47:53,400 ten program do końca. 968 00:47:53,400 --> 00:47:56,000 To po prostu w zasadzie mówi wykonać ten program. 969 00:47:56,000 --> 00:47:58,700 Więc w zasadzie do tego typu rodzaj wiersza poleceń. 970 00:47:58,700 --> 00:48:02,350 >> A potem, kiedy skończysz z to uruchom tę funkcję. 971 00:48:02,350 --> 00:48:04,800 Więc teraz mamy dostać tego rodzaju Cała sprawa z przywrócone 972 00:48:04,800 --> 00:48:06,750 jak my nie czekamy. 973 00:48:06,750 --> 00:48:08,530 Czy tego rodzaju mają sens? 974 00:48:08,530 --> 00:48:08,990 Tak? 975 00:48:08,990 --> 00:48:11,060 >> PUBLICZNOŚCI: [niesłyszalne]? 976 00:48:11,060 --> 00:48:13,610 >> KEVIN SCHMID: Więc to będzie faktycznie otworzyć nowy proces, aby to zrobić. 977 00:48:13,610 --> 00:48:19,310 Więc to jest rzeczywiście, w pewnym sensie, zła, nie bardzo zła, ale jest 978 00:48:19,310 --> 00:48:22,990 ważne, aby powiedzieć, że jest to rodzaj wracając do, z jednej strony, Apache 979 00:48:22,990 --> 00:48:26,450 model, w którym robimy wątki i procesy dla każdego wniosku lub 980 00:48:26,450 --> 00:48:29,280 procesów dla każdego wniosku. 981 00:48:29,280 --> 00:48:32,090 Jest to więc rodzaj analogiczne do tego, co robi Apache. 982 00:48:32,090 --> 00:48:35,110 W niektórych przypadkach będzie to po prostu użyć nowy wątek, który jest trochę więcej światła 983 00:48:35,110 --> 00:48:39,040 waga niż proces, ale może Apache skończyć rozwidlone nowy proces 984 00:48:39,040 --> 00:48:43,370 co jest raczej to, co robimy tutaj pośrednio przez działanie dot slash fib 45. 985 00:48:43,370 --> 00:48:48,690 >> A następnie w tym przypadku mamy rodzaj ponosić same koszty procesów. 986 00:48:48,690 --> 00:48:50,710 Więc to jest tylko jeden, co można zrobić. 987 00:48:50,710 --> 00:48:52,600 Ale żeby pokazać ten rodzaj biegania. 988 00:48:52,600 --> 00:48:57,120 I ta rozmowa jest po prostu naprawdę na celu przedstawienie tego rodzaju programów, jak 989 00:48:57,120 --> 00:49:00,710 sposób, aby pokazać różne perspektywy na jak zaprojektować serwerów takiego. 990 00:49:00,710 --> 00:49:08,300 Tak to działa, i to teraz, jeśli ja to jeszcze raz, mam dwa identyfikatory procesów. 991 00:49:08,300 --> 00:49:10,320 >> Porozmawiajmy o rzeczy zwrócić uwagę. 992 00:49:10,320 --> 00:49:11,980 Więc zauważyć, że są one stopniowo. 993 00:49:11,980 --> 00:49:12,700 To jest fajne. 994 00:49:12,700 --> 00:49:15,140 Ponieważ było 27.122 wcześniej. 995 00:49:15,140 --> 00:49:18,580 Ale informacja teraz, wrócili mniej więcej w tym samym czasie. 996 00:49:18,580 --> 00:49:23,960 >> A teraz, dobre pytanie zapytać dlatego, że sprawa jest, których zadaniem 997 00:49:23,960 --> 00:49:27,590 był teraz do sortowania, aby te rzeczy rodzaj fair play z każdym 998 00:49:27,590 --> 00:49:31,350 inne, te dwa przypadki kropka ukośnik fib 45, że wpadłem 999 00:49:31,350 --> 00:49:32,880 lub że ran węzła? 1000 00:49:32,880 --> 00:49:36,940 Kto rodzaju sprawia, że ​​w porządku, że oboje się trochę zrównoważyć czas pracy? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> PUBLICZNOŚCI: [niesłyszalne]. 1003 00:49:44,220 --> 00:49:44,620 >> KEVIN SCHMID: Tak. 1004 00:49:44,620 --> 00:49:49,740 Więc w zasadzie, kiedy robię dot slash fib 45 czy coś takiego, teraz jest 1005 00:49:49,740 --> 00:49:53,750 rodzaju do systemu operacyjnego do obsługiwać środowiska wykonawczego tych programów. 1006 00:49:53,750 --> 00:49:56,920 A teraz może je zaplanować na różnych procesorach lub jej 1007 00:49:56,920 --> 00:49:58,330 Można je zaplanować. 1008 00:49:58,330 --> 00:50:01,870 Może to kawałek do czasu, że jednym Procesor jest to albo że się 1009 00:50:01,870 --> 00:50:03,330 działać na jednej CPU. 1010 00:50:03,330 --> 00:50:05,620 Więc to jest idea, że. 1011 00:50:05,620 --> 00:50:07,220 Czy to ma sens dla wszystkich? 1012 00:50:07,220 --> 00:50:10,950 Węzeł nie tak teraz gra naprawdę udział w podziału tych zadań. 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 >> Więc to jest prawie to przykłady. 1016 00:50:17,840 --> 00:50:23,370 Chciałem tylko pokazać jeszcze jedno ponieważ wiele to dotąd 1017 00:50:23,370 --> 00:50:27,350 nie całkowicie bardzo praktyczny w niektórych przypadkach. 1018 00:50:27,350 --> 00:50:30,970 Mogę sobie wyobrazić, wraca do domu po tym porozmawiać i coś i mówi jak, 1019 00:50:30,970 --> 00:50:35,710 a ja niby mam z tym, że rozmowa Mogę zrobić dla serwera Fibonacciego 1020 00:50:35,710 --> 00:50:37,360 mój projekt końcowy. 1021 00:50:37,360 --> 00:50:40,770 Więc tutaj jest po prostu swego rodzaju jeden przykład , że mam nadzieję, że będzie - 1022 00:50:40,770 --> 00:50:44,620 może nie, ale być może - trochę więcej odpowiednie do rodzaju i końcowych projektów 1023 00:50:44,620 --> 00:50:46,440 myślenia z wyprzedzeniem na takie rzeczy. 1024 00:50:46,440 --> 00:50:48,870 >> Więc to jest chat.js. 1025 00:50:48,870 --> 00:50:52,290 Więc to jest trochę jak jakieś próbki kodu po stronie serwera, które można użyć do 1026 00:50:52,290 --> 00:50:55,700 skonfigurować serwer czatu, jak mały może widzieliście na 1027 00:50:55,700 --> 00:50:56,630 Facebook Chat czy cokolwiek. 1028 00:50:56,630 --> 00:50:59,990 Więc nie mówię, to jest jak Facebook Czat, ale jest to rodzaj 1029 00:50:59,990 --> 00:51:06,230 jak dobry - może nie jest dobre, ale może Punktem wyjścia do rozmowy - dobry 1030 00:51:06,230 --> 00:51:08,560 serwera na swojej stronie internetowej do końcowego projektu. 1031 00:51:08,560 --> 00:51:11,040 Więc spójrzmy na to, co robi. 1032 00:51:11,040 --> 00:51:15,500 >> Więc jesteśmy coraz to nic specjalnego w górę, to var SIO 1033 00:51:15,500 --> 00:51:17,050 równa wymagają Socket.IO. 1034 00:51:17,050 --> 00:51:20,280 Więc to jest inna sprawa, że ​​tak nie jest faktycznie są dostarczane z 1035 00:51:20,280 --> 00:51:22,300 Węzeł, ale można go zainstalować. 1036 00:51:22,300 --> 00:51:23,480 Jest to moduł Node. 1037 00:51:23,480 --> 00:51:25,670 Tak to jest jak niektórzy Rozszerzenie do węzła. 1038 00:51:25,670 --> 00:51:29,220 >> SocketIO jest rzeczywiście bardzo niby chłodny. 1039 00:51:29,220 --> 00:51:32,550 To abstrakcja, że ​​w zasadzie to, co to nie znaczy to, że pozwala na 1040 00:51:32,550 --> 00:51:35,770 mają ten strumień komunikacji między internecie 1041 00:51:35,770 --> 00:51:39,430 przeglądarka i serwer WWW. 1042 00:51:39,430 --> 00:51:45,250 Tak więc w większości do tej pory, mieliśmy Są bardzo szybkie jedną sekundę lub dwie 1043 00:51:45,250 --> 00:51:48,790 drugi w sieci komunikacji między przeglądarka i serwer WWW. 1044 00:51:48,790 --> 00:51:53,310 Więc to w zasadzie przejść do google.com, get rzeczy, wysłać go z powrotem, a następnie 1045 00:51:53,310 --> 00:51:53,770 skończymy. 1046 00:51:53,770 --> 00:51:56,560 Nigdy nie rozmawiamy ponownie, aż do użytkownik wpisze coś innego. 1047 00:51:56,560 --> 00:52:01,090 >> Ale co Socket.IO i podobny rodzaj rzeczy - i SocketIO jest rzeczywiście jednym 1048 00:52:01,090 --> 00:52:03,940 z rzeczy, które są zbudowane na tak WebSocket która dostępna jest rodzaj 1049 00:52:03,940 --> 00:52:06,440 jako część HTML5 - 1050 00:52:06,440 --> 00:52:09,620 , które pozwala mieć to nieprzerwany dialog. 1051 00:52:09,620 --> 00:52:13,990 I to jest bardzo przydatne w serwerze czatu rodzaju rzeczy, ponieważ jest 1052 00:52:13,990 --> 00:52:17,390 jakby ciągłym dialogu kilka sposobów, bo jeśli na czacie 1053 00:52:17,390 --> 00:52:21,540 z kimś, można teraz po prostu wysłać komunikat w dół rury, a następnie 1054 00:52:21,540 --> 00:52:23,940 Serwer może wysłać komunikat w dół rury do drugiej osoby jesteś 1055 00:52:23,940 --> 00:52:24,520 rozmowy z. 1056 00:52:24,520 --> 00:52:26,903 A potem możesz mieć tego wymieniać takiego. 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> Więc to jest jakby co SocketIO jest dobre dla. 1059 00:52:32,850 --> 00:52:38,400 Dlatego, że SocketIO używa WebSockets a jeden jest to, że w 1060 00:52:38,400 --> 00:52:43,980 dodatek do po prostu starych WebSockets, to też ma pewne sztuczki, aby zasadniczo 1061 00:52:43,980 --> 00:52:45,610 Przeglądarka to zrobić kompatybilne. 1062 00:52:45,610 --> 00:52:50,040 Tak przeglądarkach takich jak Internet Explorer niestety nie obsługują WebSockets 1063 00:52:50,040 --> 00:52:50,810 zaraz po wyjęciu z pudełka. 1064 00:52:50,810 --> 00:52:55,290 Więc używa innego rodzaju fajne schludny rzeczy z Adobe Flash, aby umożliwić 1065 00:52:55,290 --> 00:52:57,170 , aby mieć wsparcie krzyż przeglądarki. 1066 00:52:57,170 --> 00:52:58,800 Więc to jest naprawdę przydatne. 1067 00:52:58,800 --> 00:53:02,440 >> I faktycznie, wiem, że jestem rodzaju działa na czas tutaj, ale CS50 1068 00:53:02,440 --> 00:53:08,490 Dyskutować, czy widziałeś kiedyś coś jak, nie wiem, puste, i tak jest 1069 00:53:08,490 --> 00:53:11,030 Odpowiadając na to stanowisko, czy coś tak, że funkcja? 1070 00:53:11,030 --> 00:53:12,250 To SocketIO. 1071 00:53:12,250 --> 00:53:15,580 Tak więc, gdy ktoś zaczyna pisać w pole, aby omówić odpowiedzi lub 1072 00:53:15,580 --> 00:53:20,040 coś, Twoja przeglądarka ma co zwany w SocketIO emituje jakieś 1073 00:53:20,040 --> 00:53:22,660 wydarzenie, które mówi, ktoś jest odpowiedzi do tego postu. 1074 00:53:22,660 --> 00:53:26,110 >> Następnie serwer mówi, OK, co mam zrobić? 1075 00:53:26,110 --> 00:53:29,270 No to teraz muszę powiedzieć, te inne chłopaki którzy są na CS50 Porozmawiaj patrząc 1076 00:53:29,270 --> 00:53:31,170 w tym poście, że ktoś odpowiadanie. 1077 00:53:31,170 --> 00:53:34,190 Więc to jest jakby co SocketIO jest dobre, tego rodzaju ustawicznego 1078 00:53:34,190 --> 00:53:35,930 strumień dialogu. 1079 00:53:35,930 --> 00:53:37,250 OK. 1080 00:53:37,250 --> 00:53:40,060 >> Więc co mam tutaj - i jesteśmy po prostu będzie ignorować tablicę połączeń 1081 00:53:40,060 --> 00:53:41,390 na trochę - 1082 00:53:41,390 --> 00:53:43,080 co mogę zrobić, to mam inny słuchać. 1083 00:53:43,080 --> 00:53:46,880 Więc to jest tak, jak jest w Socket.IO mówiąc posłuchajmy na tym porcie. 1084 00:53:46,880 --> 00:53:50,060 A następnie zrobić to na związku. 1085 00:53:50,060 --> 00:53:53,360 Więc to jest po prostu w zasadzie Gniazdo Io sposób mówienia, kiedy otrzymujemy 1086 00:53:53,360 --> 00:53:55,840 zasilania, chcę ci aby uruchomić ten kod. 1087 00:53:55,840 --> 00:53:59,870 >> I zauważyć, że zamiast rec i res przeszły tam mam gniazda. 1088 00:53:59,870 --> 00:54:03,260 I to jest w zasadzie Socket Ten pomysł rzecz, że można pisać i czytać 1089 00:54:03,260 --> 00:54:05,750 od tego użytkownika ma Komunikaty ewentualnie. 1090 00:54:05,750 --> 00:54:10,700 I wiadomości, które wysyłane może przejść przez ten Socket. 1091 00:54:10,700 --> 00:54:12,140 Czy to ma sens? 1092 00:54:12,140 --> 00:54:14,490 Więc to jest ta kontynuuje rzeczą. 1093 00:54:14,490 --> 00:54:17,820 >> Więc co mam zrobić, to zadzwonić Socket.emit. 1094 00:54:17,820 --> 00:54:20,330 I emitują trwa dość dużo dwa argumenty. 1095 00:54:20,330 --> 00:54:24,100 Pierwszy argument jest ciągiem tylko reprezentującym typ 1096 00:54:24,100 --> 00:54:25,270 co ty emitowania. 1097 00:54:25,270 --> 00:54:28,120 Więc w tym przypadku, mam wykorzystanie ten ciąg nowej wiadomości. 1098 00:54:28,120 --> 00:54:32,670 I to tylko w zasadzie powiedzieć, że typ to coś, co mnie 1099 00:54:32,670 --> 00:54:34,750 wysyłania, jest nowa wiadomość. 1100 00:54:34,750 --> 00:54:38,460 Dzięki czemu można słuchać do określonych rodzajów jak nowe wiadomości lub cokolwiek 1101 00:54:38,460 --> 00:54:39,960 za pomocą kropki na. 1102 00:54:39,960 --> 00:54:44,570 >> Więc połączenie i użytkownik wysłał tam, jeśli obejrzysz, gdzie nazywamy punkt na, 1103 00:54:44,570 --> 00:54:48,150 są to ciągi znaków, które reprezentują inne typy wiadomości użytkowników. 1104 00:54:48,150 --> 00:54:52,060 Tak, to w zasadzie można mieć ten Emit jeden z tych typów komunikatów i 1105 00:54:52,060 --> 00:54:55,520 następnie zrobić coś w odpowiedzi na jeden z tych typów komunikatów 1106 00:54:55,520 --> 00:54:57,640 >> Więc jestem emitujące ten nową wiadomość. 1107 00:54:57,640 --> 00:55:00,540 Mamy zamiar ignorować connections.push na sekundę. 1108 00:55:00,540 --> 00:55:03,360 Ale wtedy mówię, Socket.on użytkownik wysłana. 1109 00:55:03,360 --> 00:55:07,540 Więc teraz to trochę jak przy Użytkownik wysyła mi wiadomość, chcę 1110 00:55:07,540 --> 00:55:09,240 uruchomienie tego kodu. 1111 00:55:09,240 --> 00:55:12,080 I zauważyć, że funkcja anonimowa bierze w tej zmiennej 1112 00:55:12,080 --> 00:55:16,300 Dane, które nazywane jest w zasadzie dzieje mieć wiadomości użytkownika. 1113 00:55:16,300 --> 00:55:20,700 >> Więc teraz niech rodzaju mówi się o tablicy połączeń. 1114 00:55:20,700 --> 00:55:24,590 Więc to jest przeznaczone dla klienta czatu gdzie w zasadzie każdy trochę w 1115 00:55:24,590 --> 00:55:25,950 sam czacie. 1116 00:55:25,950 --> 00:55:29,640 Więc w zasadzie, czego potrzebujemy, aby zachować wokół tablicy, który jest w zasadzie pewne 1117 00:55:29,640 --> 00:55:33,170 reprezentuje wszystkich ludzi na czacie w kilka sposobów, czy to ma sens. 1118 00:55:33,170 --> 00:55:33,340 Prawda? 1119 00:55:33,340 --> 00:55:37,190 Bo musimy wiedzieć, kto tych ludzi są więc możemy wysłać do nich wiadomości 1120 00:55:37,190 --> 00:55:39,140 że inni ludzie wysyłają do nas. 1121 00:55:39,140 --> 00:55:44,440 >> Więc co ten kod czyni to, gdy użytkownik wysyła komunikat - jest to rodzaj 1122 00:55:44,440 --> 00:55:45,300 wydarzenie - 1123 00:55:45,300 --> 00:55:47,120 mamy zamiar uruchomić ten kod. 1124 00:55:47,120 --> 00:55:51,240 I co możemy zrobić, to możemy uruchomić przez to Tablica nazwaliśmy połączenia. 1125 00:55:51,240 --> 00:55:54,390 I prawie na każdym połączeniu z wyjątkiem jednej, która jest nasza, to jest 1126 00:55:54,390 --> 00:55:59,520 co ten kod mówi, wysyłamy nowy Wiadomość o tym załączonym wiadomości 1127 00:55:59,520 --> 00:56:01,210 informacje. 1128 00:56:01,210 --> 00:56:04,880 >> Więc jeśli zauważy tutaj, co zrobiłem, kiedy użytkownik faktycznie czyni nowy 1129 00:56:04,880 --> 00:56:08,560 połączenie jest Dodałem z Sposób JavaScript.push, to 1130 00:56:08,560 --> 00:56:12,100 w zasadzie tylko, że jak dodać że gniazda jako wartość w 1131 00:56:12,100 --> 00:56:13,900 Nasza tablica połączeń. 1132 00:56:13,900 --> 00:56:20,560 Więc teraz, gdy ten kod działa, to będzie wysłać rzeczy do tych, zwłaszcza 1133 00:56:20,560 --> 00:56:22,020 połączeń. 1134 00:56:22,020 --> 00:56:26,980 Więc może to być dobry punkt wyjścia dokonywania serwer czatu 1135 00:56:26,980 --> 00:56:28,250 lub coś podobnego. 1136 00:56:28,250 --> 00:56:33,315 >> I niby fajne jest to, że Kod, który można zobaczyć tutaj, jak i na 1137 00:56:33,315 --> 00:56:36,390 emitują i takie, które jest takie samo rodzaj kodu JavaScript, który by 1138 00:56:36,390 --> 00:56:39,260 pisać w przeglądarce do interakcji z serwera. 1139 00:56:39,260 --> 00:56:42,480 Więc dlatego SocketIO jest rodzaj czyste i przydatne w ten sposób. 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> No i jeszcze jedna rzecz bardzo szybko. 1142 00:56:49,250 --> 00:56:55,970 Był projekt końcowy CS50 ubiegłym roku że w zasadzie realizowane czat 1143 00:56:55,970 --> 00:56:57,840 Serwer w Node.js. 1144 00:56:57,840 --> 00:57:01,350 Myślę, że to Harvardchats.org ale nie jestem - 1145 00:57:01,350 --> 00:57:02,940 OK. 1146 00:57:02,940 --> 00:57:06,190 Nie jestem pewien, co URL jest, ale Mogę wysłać, że się potem. 1147 00:57:06,190 --> 00:57:09,260 Ale to trochę ostygnie, co można zrobić z Node.js. 1148 00:57:09,260 --> 00:57:14,680 >> Więc mam nadzieję, że w ogóle macie dobre poczucie co Node.js jest przydatna 1149 00:57:14,680 --> 00:57:17,870 i jak można było być może zastosować do ostatecznego projektu. 1150 00:57:17,870 --> 00:57:21,050 Będę wysyłając kilka środki wraz z tym. 1151 00:57:21,050 --> 00:57:23,170 I dziękuję za przybycie. 1152 00:57:23,170 --> 00:57:23,610 Dziękuję. 1153 00:57:23,610 --> 00:57:27,168 >> [Aplauz]