《了不起的 nodejs》中 TwitterWeb 案例 bug 解决
时间:2022-04-22
本文章向大家介绍《了不起的 nodejs》中 TwitterWeb 案例 bug 解决,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落。
现在我们看一下第七章HTTP,一个Twitter Web客户端的例子。
先贴上书中源码
1.创建server.js
1 var qs = require('querystring');
2 require('http').createServer(function(req,res){
3 var body ="";
4 req.on('data',function(chunk){
5 body += chunk;
6 });
7 req.on('end',function(){
8 res.writeHead(200);
9 res.end('Done');
10 console.log('n got name 33[90m' + qs.parse(body).name + ' 33[39mn');
11
12 });
13 }).listen(3000);
2.创建client.js
1 var http = require('http'),
2 qs = require('querystring');
3
4 function send (theName){
5 http.request({
6 host: '127.0.0.1',
7 port: 3000,
8 url: '/',
9 method:'POST'
10 },function(res){
11 res.setEncoding('utf8');
12 res.on('end',function(){
13 console.log('n 33[90m request complete! 33[39m' );
14 process.stdout.write('n your name: ');
15 });
16 }).end(qs.stringify({name: theName}));
17 }
18
19 process.stdout.write('n your name: ');
20 process.stdin.resume();
21 process.stdin.setEncoding('utf8');
22 process.stdin.on('data',function(name){
23 send(name.replace('n', ''));
24 })
很遗憾,最后出来的结果是这样子
效果非常不理想
问题出在哪里呢,和源码一样啊?
哈哈,其实只需要将 client.js 中发送用户名的回调函数修改一下就可以了。
1 var http = require('http'),
2 qs = require('querystring');
3
4 function send (theName){
5 http.request({
6 host: '127.0.0.1',
7 port: 3000,
8 url: '/',
9 method:'POST'
10 },function(){
11 // res.setEncoding('utf8');
12 // res.on('end',function(){
13 console.log('n 33[90m request complete! 33[39m' );
14 process.stdout.write('n your name: ');
15 // });
16 }).end(qs.stringify({name: theName}));
17 }
18
19 process.stdout.write('n your name: ');
20 process.stdin.resume();
21 process.stdin.setEncoding('utf8');
22 process.stdin.on('data',function(name){
23 send(name.replace('n', ''));
24 })
最终结果就是这样子
是不是很酷,虽然是一个很简单的小例子,不过对于初学者来说还是很有成就感的!
- 性能测试必备监控技能MySQL篇15
- [快学Python3]Number(数字)
- [快学Python3]基础知识
- [快学Python3]开发工具
- [快学Python3]解析器
- [快学Python3]函数
- [快学Python3]循环控制
- [linux][kprobe]谁动了我的文件---使用kprobe找到目标进程
- [快学Python3]if条件控制
- codeforces 767A Snacktower(模拟)
- [快学Python3]Sets(集合)
- [nptl][rwlock]pthread rwlock原理分析
- [快学Python3]Dictionary(字典)
- [快学Python3]List(列表)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JavaWeb——Redis数据库之Jedis操作5种类型数据的使用总结与前端Ajax获取Redis缓存数据的案例实战(结合了MySQL数据库)
- Java——数据库编程JDBC之快速入门吐血总结及各关键对象详解(提供了JDBCUtils工具类)
- MySQL数据库——事务的操作(开启、回滚、提交)、特征、隔离级别基础总结
- MySQL数据库——数据库的设计(多表之间的关系与三大范式)与备份还原
- JavaWeb——JSP入门学习(JSP基本概念、JSP脚本、JSP内置对象)
- MySQL数据库——数据库CRUD之基本DML增删改表操作及DQL查表操作
- JavaWeb——AJAX异步技术实现方式与案例实战(原生的JS方式、使用JQuery方式)
- JavaWeb——一文带你入门Servlet(生命周期、注解配置方法、IDEA与tomcat的相关配置)
- JavaWeb——JQuery之基础案例实战(实现表格隔行换色、实现全选全不选、QQ表情选择、下拉列表选中条目左右选择功能)
- JavaWeb——JQuery之DOM操作应用及实践案例总结(DOM内容操作、DOM属性操作、CRUD操作)
- JavaWeb——Filter过滤器快速入门与是否登录验证&过滤敏感词汇案例实战(Filter配置方式、执行流程、生命周期方法、过滤器链)
- JavaWeb——会话技术之Session快速入门与验证码登录案例实战(Session实现原理、使用细节、快速入门、Session的特点)
- Nginx配置文件服务器
- JavaWeb——会话技术之Cookie快速入门与案例实战(详细讲解了Cookie实现原理、Cookie使用细节、Cookie的特点及作用)
- docker安装kibana