Transcript from the "Node Under the Hood Q&A" Lesson
>> Will Sentance: Let's start with, who was the first person I saw? Andrew, I'll start with you, Andrew.
>> Speaker 2: I'm noticing a lack of semicolons, are they implied, cuz it's slides, or is this an intentional, something special?
>> Will Sentance: No, darn, I almost forgot to mention that I put semicolons back on.
>> Speaker 3: I feel like I've seen rec resident error as a third parameter is that-
>> Will Sentance: Let's see how we handle errors in just a few slides.
[00:00:57] No problem, great question to T out there, Rich you had a clarification? Charlie?
>> Speaker 2: Yeah, just to be clear the only code that note we'll ever have access to is what you provided in the create server function.
>> Will Sentance: Yeah, that's a good way of putting the only function code that can have an auto rock well.
[00:01:15] On the same note as Sarah roses question. We actually are gonna see that if that request comes in very happily and successfully, cheerfully, great request, no errors. I'll give you a preview, it's actually gonna flash a little message down here saying request, which will also trigger this function.
[00:01:34] Due on incoming but we can see that if another situation, may be an error, maybe the client sends a corrupted request it might not flash request down here. And therefore, it might not end up triggering due on incoming, but triggering something else. So we're gonna get more control than you think.
[00:01:52] Mohammed, you're up next.
>> Speaker 2: Yeah, just clarifying the the second object is created.
>> Will Sentance: It's a weird one, right?
>> Speaker 2: Yeah, and we get to set that label.
>> Will Sentance: Weakens the label? I could call it, you know I could call it Mohammed's auto created object of function. No, not Mohammed's, Muhammad's favorite note auto created set of functions.
[00:02:14] And as long as you then refer to it by the same label, when we want to access stuff on it. What do we try to access on it? What function are we trying to access on it, Mohamed?
>> Speaker 2: The sending back the-
>> Will Sentance: We just want name. What's the functions name?
[00:02:29] Anyone got it?
>> Speaker 2: End.
>> Will Sentance: End, by the way, how do we know that? The Node homepage, the Node docks. It is literally got, that's where we spend most of our time. As long as we have this internal meta model that's the point of node. As long as you have this under the hood mental model, you just go to Node docs, and you go and look for.
[00:02:54] What's the auto inserted data that when the background task finishes gets inserted? And therefore, how do I need to structure the function that I pass as the auto triggered by Node function, such that I know what I need to set parameters up. And then the order inserted objects full of in this case like multiple functions do like 20 functions.
[00:03:19] I just get access to them by using the label I gave the second inserted input, auto inserted input, and then there's a whole bunch of function on here we just use in for now. There's other things that I write as a whole bunch of folks we can use to control specifically what we add to this message to get sent back, sounds good.
>> Speaker 2: So we'll end as take any parameter and then just send it along.
>> Will Sentance: Yeah, it's a simplifying, really it's job is to say you've finished editing the message down here, move on. Cuz typically what we do is we will use other functions in here to set on this not object, sorry, this HTTP text message.
[00:03:57] It's a text message, set other bits of information on it. We can set the headers, we can set the body, we usually run end, or with nothing in it as the input. Cuz its only Java is to say hey node, I finished editing stuff on this message, you can send it back now, but you can also path to it.
[00:04:14] And then want to keep it as simple as possible to start, you can also pause to it a string, and that stream will be the message that gets them back, but that's not typically how we use it. Typically, we add content to this message to send back using things like the right function here, or we can set headers on this message to get send back.
[00:04:31] But in the end if you do pass something to it will be implicitly the data that gets sent back. It's a shorthand just of our very, very first Node server, and it is a full server that we have at least we minimize the number of new things are introducing.
[00:04:47] We typically wouldn't use end for this, but it goes a very, very light weight of setting the data on the response message, a chippy message back. Great question Sam. We want to come back to it, Seth we have a question?
>> Speaker 2: Yeah, sure, just a curiosity, what happen if we open don't listen to the create server doing comming.
>> Will Sentance: No problem, and most people would do that. Most people would say, because what is this obvious returns an object which has got a bunch of functions on it that give us edit access over the background here. We use one of the functions, which one was it, is that?
>> Speaker 2: Don't listen.
>> Will Sentance: Listen.
>> Speaker 2: Yeah.
[00:05:42] Jobs as an evaluate language means any statement must be eventually turned into its actual underlying value which in this case is this object. And so we can grab the missing function of it in the same line, yeah?
[00:06:18] Yeah, I'm just doing it for pedagogical purposes. Here you go, Michael, go ahead man.
>> Speaker 2: How does the sender computer know which port to get? I know they were setting-
>> Will Sentance: I should said, I made that really, really clear it defaults to it, every browser sends our message, defaults to 80.
[00:06:37] We don't even need to write it, we don't need to say twitter.com, enter at port 80, it defaults to 80.
>> Speaker 2: So sometimes you're able to set your Node port to a different port?
>> Will Sentance: Why would we even do that? We'll see in a moment, but when we're developing we may want to change it.
[00:06:54] Plus there are other slightly marginally different protocols, like HDPS that there is a secure connection from our computer browser through to the web server. That would not allow others to interfere with that message being sent, sort of man in the middle they call it or person in the middle attack.
[00:07:13] It'll block that from happening, which doesn't default to entering at 80, it defaults to entering at a different entry point. Okay, great question, yeah. Andrew, go ahead, you had a follow-up I think.
>> Will Sentance: Yes.
>> Speaker 2: And then, does Node run that in the same execution context as Java Script, or is that kind of off running its own thing?
[00:08:25] When is it allowed back in to have the purple pen, the Node pen execute its code, when? Because what if I've got a bunch of other code running here? Does it just say, hold on, stop? I'm coming back in now, I'm ready to run. Or do we need a set of strict rules for when this function is allowed back in?
[00:08:44] And it's gonna turn out, we do.