First up, we want to emit to just a specific room and we know we can tack on a to call right in the io.emit line to get that done, passing in the room name, with access to that on the user object user.room. Now that we're emitting to just the individual room, we also do want to change the name we use. Instead of message.from, we're going to access the name on the user object, user.name, and there we go:
io.to(user.room).emit('newMessage', generateMessage(user.name, message.text));
Now we have a much better system for sending those text messages. I'm going to refresh my first tab and my second tab, and we're going to send some text messages around. I'm going to send the number 1 from my second tab and we do get Andrew and we do see the number 1:

Over inside our other tab the message is nowhere to be found because we're just emitting it to users in The Office Fans room:

If I try to send a message from this first tab, we're going to see it there with the name Jen, and the second tab also looks good; we're not seeing that message from Jen.
Now I can go ahead and join a room again. I'm going to use the name Mike and we're going to join The Office Fans one more time. When I join the room I do see Andrew and Mike both connected:

If I send a message like Should work I see it there, and I also see it in the tab of the other user connected to The Office Fans room. Once again it's not visible to someone else connected to a different room. That is all we need to do to get our messages sending correctly. The last thing to do is to wire that up for createLocationMessage.
Now as we just saw we were also able to fix the validation issue, if I try to hit enter right now, nothing happens. I don't get moved out of the box, the focus doesn't change and no message is sent, which is great.