BN.com Gift Guide

Professional Node.js: Building Javascript Based Scalable Software

( 1 )

Overview

Learn to build fast and scalable software in JavaScript with Node.js

Node.js is a powerful and popular new framework for writing scalable network programs using JavaScript. This no nonsense book begins with an overview of Node.js and then quickly dives into the code, core concepts, and APIs. In-depth coverage pares down the essentials to cover debugging, unit testing, and flow control so that you can start ...

See more details below
Other sellers (Paperback)
  • All (17) from $14.20   
  • New (12) from $14.20   
  • Used (5) from $14.20   
Professional Node.js: Building Javascript Based Scalable Software

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$25.99
BN.com price
(Save 42%)$44.99 List Price

Overview

Learn to build fast and scalable software in JavaScript with Node.js

Node.js is a powerful and popular new framework for writing scalable network programs using JavaScript. This no nonsense book begins with an overview of Node.js and then quickly dives into the code, core concepts, and APIs. In-depth coverage pares down the essentials to cover debugging, unit testing, and flow control so that you can start building and testing your own modules right away.

  • Covers node and asynchronous programming main concepts
  • Addresses the basics: modules, buffers, events, and timers
  • Explores streams, file systems, networking, and automated unit testing
  • Goes beyond the basics, and shares techniques and tools for debugging, unit testing, and flow control

If you already know JavaScript and are curious about the power of Node.js, then this is the ideal book for you.

Read More Show Less

Product Details

  • ISBN-13: 9781118185469
  • Publisher: Wiley
  • Publication date: 10/30/2012
  • Edition number: 1
  • Pages: 408
  • Sales rank: 485,503
  • Product dimensions: 7.40 (w) x 9.20 (h) x 3.00 (d)

Meet the Author

Pedro Teixeira is a prolific open-source programmer and author of many Node.js modules. He is a founding partner of The Node Firm and a senior programmer at Nodejitsu Inc., the leading Node.js platform-as-a-service provider. He is also the author of the popular Node Tuts screencasts.

Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.

Read More Show Less

Table of Contents

INTRODUCTION xxvii

PART I: INTRODUCTION AND SETUP

CHAPTER 1: INSTALLING NODE 3

Installing Node on Windows 4

Installing on Mac OS X 5

Installing Node Using the Source Code 6

Choosing the Node Version 6

Downloading the Node Source Code 6

Building Node 7

Installing Node 7

Running Node 8

Setting Up and Using Node Package Manager 8

Using NPM to Install, Update, and Uninstall Packages 9

Summary 13

CHAPTER 2: INTRODUCING NODE 15

Introducing the Event-Driven Programming Style 16

How Node and JavaScript Make Writing Asynchronous Applications Easier 17

What Are Closures? 18

How Closures Help When Programming Asynchronously 19

Summary 19

PART II: NODE CORE API BASICS

CHAPTER 3: LOADING MODULES 23

Understanding How Node Loads Modules 24

Exporting a Module 24

Loading a Module 25

Summary 28

CHAPTER 4: USING BUFFERS TO MANIPULATE, ENCODE, AND DECODE BINARY DATA 29

Creating a Buffer 30

Getting and Setting Bytes in a Buffer 30

Slicing a Buffer 32

Copying a Buffer 32

Decoding a Buffer 32

Summary 33

CHAPTER 5: USING THE EVENT EMITTER PATTERN TO SIMPLIFY EVENT BINDING 35

Understanding the Standard Callback Pattern 36

Understanding the Event Emitter Pattern 36

Understanding Event Types 37

Using the Event Emitter API 38

Binding Callbacks Using .addListener() or .on() 38

Binding Multiple Event Listeners 39

Removing an Event Listener from an Event Emitter

Using .removeListener() 40

Getting a Callback Executed at Most Once Using .once() 40

Removing All Event Listeners from an Event Emitter Using .removeAllListeners() 41

Creating an Event Emitter 41

Inheriting from Node Event Emitter 42

Emitting Events 42

Summary 43

CHAPTER 6: SCHEDULING THE EXECUTION OF FUNCTIONS USING TIMERS 45

Using setTimeout to Defer the Execution of a Function 46

Using clearTimeout to Cancel the Execution of a Function 46

Scheduling and Canceling the Repetitive Execution of a Function 47

Using process.nextTick to Defer the Execution of a Function Until the Next Event Loop Iteration 47

Blocking the Event Loop 48

Escaping the Event Loop 49

Using setTimeout Instead of setInterval to Force Serialization 49

Summary 50

PART III: FILES, PROCESSES, STREAMS, AND NETWORKING

CHAPTER 7: QUERYING, READING FROM, AND WRITING TO FILES 53

Manipulating File Paths 54

Normalizing Paths 54

Joining Paths 54

Resolving Paths 55

Finding the Relative Path Between Two Absolute Paths 55

Extracting Components of a Path 55

Determining the Existence of a Path 56

Introducing the fs Module 57

Querying File Statistics 57

Opening a File 58

Reading from a File 59

Writing to a File 60

Closing a File 60

Summary 62

CHAPTER 8: CREATING AND CONTROLLING EXTERNAL PROCESSES 63

Executing External Commands 64

Spawning Child Processes 69

Creating the Child Process 69

Listening for Data from the Child Process 69

Sending Data to the Child Process 70

Receiving Notification When the Child Process Exits 72

Signaling and Killing Processes 73

Summary 74

CHAPTER 9: READING AND WRITING STREAMS OF DATA 75

Using a Readable Stream 76

Waiting for Data 76

Pausing and Resuming a Stream 77

Knowing When the Stream Ends 77

Using Writable Streams 77

Writing Data into a Stream 78

Waiting for a Stream to Drain 78

Considering Some Stream Examples 78

Creating File-System Streams 79

Understanding Networking Streams 80

Avoiding the Slow Client Problem and Saving Your Server 80

Understanding the Slow Client Problem 80

Avoiding the Slow Client Problem 81

Using stream.pipe() to Prevent the Slow Client Problem and Assembling Readable and Writable Streams Using pipe() 82

Summary 82

CHAPTER 10: BUILDING TCP SERVERS 83

Creating a TCP Server 83

Using the Socket Object 85

Understanding Idle Sockets 86

Setting Up Keep-Alive 87

Using Delay or No Delay 87

Listening for Client Connections 88

Closing the Server 88

Handling Errors 88

Building a Simple TCP Chat Server 89

Accepting Connections 89

Reading Data from a Connection 90

Collecting All the Clients 90

Broadcasting Data 91

Removing Closed Connections 92

Using Your TCP Chat Server 93

Summary 93

CHAPTER 11: BUILDING HTTP SERVERS 95

Understanding the http.ServerRequest Object 97

Understanding the http.ServerResponse Object 98

Writing a Header 98

Changing or Setting a Header 99

Removing a Header 99

Writing a Piece of the Response Body 99

Streaming HTTP Chunked Responses 99

Piping a File 100

Piping the Output of Another Process 100

Shutting Down the Server 101

Example 1: Building a Server that Serves Static Files 101

Example 2: Making Use of HTTP Chunked Responses and Timers 102

Summary 102

CHAPTER 12: BUILDING A TCP CLIENT 103

Connecting to a Server 104

Sending and Receiving Data 105

Ending the Connection 105

Handling Errors 106

Building an Example Command-Line TCP Client 106

Connecting to the Server 107

Sending the Command Line to the Server 107

Printing Server Messages 107

Reconnecting if the Connection Dies 108

Closing the Connection 109

Putting the Client Together 111

Summary 112

CHAPTER 13: MAKING HTTP REQUESTS 113

Making GET Requests 113

Using Other HTTP Verbs 114

Inspecting the Response Object 115

Obtaining the Response Body 116

Streaming the Response Body 116

Pooling Sockets Using http.Agent 116

Using a Third-Party Request Module to Simplify HTTP Requests 118

Installing and Using Request 118

Creating a Testing Server 120

Following Redirects 121

Setting Some Request Options 123

Encoding the Request Body 125

Streaming 127

Using a Cookie Jar 127

Summary 128

CHAPTER 14: USING DATAGRAMS (UDP) 129

Understanding UDP 129

Understanding the Uses of UDP 130

Building a Datagram Server 130

Listening for Messages 130

Testing the Server 131

Inspecting Additional Message Information 132

Creating a Simple Datagram Echo Server 132

Waiting for Messages 132

Sending Messages Back to Senders 132

Putting the Echo Server Together 133

Building a Datagram Client 134

Creating the Client 134

Sending Messages 134

Closing the Socket 134

Creating a Simple Datagram Command-Line Client 135

Reading from the Command Line 135

Sending Data to the Server 135

Receiving Data from the Server 136

Putting the Command-Line UDP Client Together 136

Understanding and Using Datagram Multicast 136

Receiving Multicast Messages 137

Sending Multicast Messages 138

Understanding Maximum Datagram Size 138

Summary 138

CHAPTER 15: SECURING YOUR TCP SERVER WITH TLS/SSL 139

Understanding Private and Public Keys 139

Generating a Private Key 140

Generating a Public Key 140

Building a TLS Server 141

Initializing the Server 141

Listening for Connections 141

Reading Data from the Client 142

Sending Data to the Client 142

Ending the Connection 142

Building a TLS Client 143

Initializing the Client 143

Connecting to the Server 143

Verifying the Server Certificate 143

Sending Data to the Server 144

Reading Data from the Server 144

Ending the Connection 144

Building Some Examples 145

Creating a TLS Chat Server 145

Creating a TLS Command-Line Chat Client 146

Verifying the Client Certificate 147

Summary 148

CHAPTER 16: SECURING YOUR HTTP SERVER WITH HTTPS 149

Building a Secure HTTP Server 149

Setting Up the Server Options 150

Listening for Connections 150

Validating the HTTPS Client Certificate 151

Creating an HTTPS Client 152

Initializing the Client 152

Making the Request 152

Validating the HTTPS Server Certificate 153

Summary 154

PART IV: BUILDING AND DEBUGGING MODULES AND APPLICATIONS

CHAPTER 17: TESTING MODULES AND APPLICATIONS 157

Using a Test Runner 157

Writing Tests 158

Running Tests 159

Using an Assertion Testing Module 159

Using the assert Module 159

Using the Built-in Assertion Functions in Node-Tap 161

Testing Your Asynchronous Module 163

Summary 166

CHAPTER 18: DEBUGGING MODULES AND APPLICATIONS 167

Using console.log 167

Using Node’s Built-in Debugger 169

Using Node Inspector 173

Summary 175

CHAPTER 19: CONTROLLING THE CALLBACK FLOW 177

Understanding the Boomerang Effect 177

Avoiding the Boomerang Effect

by Declaring Functions 179

Using the async Flow Control Library 183

Executing in Series 184

Executing in Parallel 185

Cascading 186

Queuing 187

Iterating 189

Mapping 190

Reducing 191

Filtering 192

Detecting 193

Summary 194

PART V: BUILDING WEB APPLICATIONS

CHAPTER 20: BUILDING AND USING HTTP MIDDLEWARE 197

Understanding the Connect HTTP Middleware Framework 198

Building Your Own HTTP Middleware 198

Creating Asynchronous Middleware 200

Registering Callbacks Inside Middleware 201

Handling Errors Inside Middleware 203

Using the HTTP Middleware Bundled in Connect 206

Logging Requests 206

Handling Errors 208

Serving Static Files 209

Parsing the Query String 210

Parsing the Request Body 211

Parsing Cookies 212

Using a Session 213

Other Available Middleware 216

Summary 216

CHAPTER 21: MAKING A WEB APPLICATION USING EXPRESS.JS 217

Initializing Your Express.js Application 218

Setting Up Middleware in Your Application 220

Routing Requests 222

Handling Routes 222

Using Sessions 229

Using Route Middleware 234

Summary 238

CHAPTER 22: MAKING UNIVERSAL REAL-TIME WEB APPLICATIONS USING SOCKET.IO 241

Understanding How WebSockets Work 242

Using Socket.IO to Build WebSocket Applications 243

Installing and Running Socket.IO on the Server 243

Building a Real-Time Web Chat with Socket.IO 245

Extending the Chat Application 250

Detecting Disconnections 254

Separating Users into Rooms 255

Using Namespaces 259

Distributing the Server-Side Application Using Redis 259

Summary 263

PART VI: CONNECTING TO DATABASES

CHAPTER 23: CONNECTING TO MYSQL USING NODE-MYSQL 267

Using a Library to Connect to and Communicate

with a MySQL Database 268

Adding Data to the Database with

Security Concerns in Mind 270

Reading Data Effi ciently 272

Summary 276

CHAPTER 24: CONNECTING TO COUCHDB USING NANO 277

Installing Nano 278

Connecting and Creating a Database 281

Storing Documents 285

Creating and Using CouchDB Views 286

Attaching Files to a CouchDB Document 298

Summary 310

CHAPTER 25: CONNECTING TO MONGODB USING MONGOOSE 311

Installing Mongoose 313

Understanding How Mongoose Uses Models to Encapsulate Database Access 313

Connecting to MongoDB 314

Defining a Schema 314

Defining a Model 315

Using Validators 324

Using Modifiers 330

Using Getters 331

Using Virtual Attributes 332

Using Default Values 338

Defining Indexes 340

Referencing Other Documents Using DB Refs 341

Defining Instance Methods 347

Defining Static Methods 348

Summary 349

INDEX 351

Read More Show Less

Customer Reviews

Average Rating 4
( 1 )
Rating Distribution

5 Star

(0)

4 Star

(1)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Posted March 12, 2013

    more from this reviewer

    This book introduces Node.js and various related technologies. I

    This book introduces Node.js and various related technologies. It starts off with how to install Node.js
    and covers the Core API, how to fo File Processing, Streams and Networking, how to build Web Applications
    and connect to databases like MongoDB, MySQL, CouchDB etc.

    It specifically covers about event driven programming on the Server Side, using buffers to encode/decode binary data,
    how to do event binding, creating and controlling external processes, building TCP Servers, HTTP Servers, HTTP Client,
    securing using HTTPS, using Express.JS, SOCKET.IO etc.

    The book is easy to read and very understandable.

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)