从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)

1、server端

支持数学运算的服务器,服务器的返回结果用json对象表示。

math-server.js

//通过监听3000端口使其作为Math Wizard的后台程序

var math = require('../nodejsExample3/math.js');

var express = require('express');



var app = express();



app.configure(function(){

    app.use(app.router);

    //默认的错误处理函数,显示栈轨迹

    //如果要显示用户友好的错误,app.err(function(err, req, res, next){

    // res.send(error page);  //or res.render('template');

    // });

    app.use(express.errorHandler({

        dumpExceptions: true, showStack: true

    }));

});



app.get('/fibonacci/:n', function(req, res, next){

    math.fibonacciAsync(Math.floor(req.params.n), function(val){

        res.send({n: req.params.n, result: val});

    })

});

app.get('/factorial/:n', function(req, res, next){

    res.send({n: req.params.n, result: math.factorial(Math.floor(req.params.n))});

});

app.get('/mult/:a/:b', function(req, res, next){

    res.send({a: req.params.a, b: req.params.b, result: req.params.a * req.params.b});

});

app.get('/square/:a', function(req, res, next){

    res.send({a: req.params.a, result: req.params.a * req.params.a});

});



app.listen(3000);

测试结果:从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)

 

2、client端

http.request方法会创建一个HTTP请求,并将URL元素分割到参数对象中,res.on语句里声明的回调函数会在HTTP相应数据到达时触发。

每当app.get请求处理函数调用res.send,它的HTTP相应会反过来让res.on('data'...)处理函数 等待响应的产生

math-client.js

var http = require('http');

var util = require('util');



[

    "/factorial/20","/factorial/20",

    "/mult/10/20","/square/12"

].forEach(function(path){

        var req = http.request({

            host: "localhost",

            port: 3000,

            path: path,

            method: 'GET'

        }, function(res){

            res.on('data', function(chunk){

                util.log('BODY: ' + chunk);

            });

        });

        req.end();

    });

先启动server,然后再测试client。

从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)

你可能感兴趣的:(node.js)