最近入坑node.js

我宣布:node.js或者是javascript是世界上最好的语言,除了php之外。哈哈哈哈哈

发现node.js构建微服务什么的真的是非常方便啊。

1、前提

使用net和readline构建一个简单的服务端和客户端的聊天,当然这个聊天是基于终端的,没有任何的客户端可以使用。

只是熟悉一下net的使用而已。

net用于构建tcp服务以及服务的连接和通信,而readline用于读取标准输入。

2、服务端 server.js


/**
 * Created by Postbird on 2017/2/21.
 */

var net=require('net');
var readLine=require('readline');

//端口和HOST
var PORT=8080;
var HOST='127.0.0.1';
//创建readline的接口,指定输入和输出
var rl=readLine.createInterface({
    input:process.stdin,
    output:process.stdout
});
//创建服务端 并进行监听
var server=net.createServer(function(connection){
    console.warn('[System] client connected...');
    //如果客户端结束了链接  监听end
    connection.on('end',function(){
        console.warn('[System] client close the connection...');
    });
    //如果发生了错误 监听错误事件
    connection.on('error',function(err){
        console.error('[Error] '+err.message);
    });
    // 进行通信 通过监听data来实现
    //接收消息 进行显示
    connection.on('data',function(data){
        console.log('[Client] '+data.toString());
    });
    // connection.pipe(connection);
    //监听终端的输入
    rl.on('line',function(line){
        //有输入则写入
        connection.write(line.toString());
    })
});

//监听端口
server.listen(PORT,HOST,function(){
    console.warn('[System] server is listening:8080');
});
//监听关闭
server.on('close',function(){
    console.error('[System] connection closed...');
});
//监听错误
server.on('error',function(err){
    console.error('[Error] '+err.message);
});

3、客户端 client.js


/**
 * Created by Postbird on 2017/2/21.
 */

var net = require('net');
var readLine=require('readline');

//端口和HOST
var PORT=8080;
var HOST='127.0.0.1';

//从终端读取输入
var rl=readLine.createInterface({
    input:process.stdin,
    output:process.stdout,
});

//客户端连接服务器
var client=net.connect(PORT,HOST,function(){
    console.warn('[System] connected to server...');
});
//接收服务器发来的消息
client.on('data',function(data){
   console.log('[Server] '+data.toString());
    // client.end();
});
//监听终端读取
rl.on('line',function(line){
    //有输入后发给服务端
    client.write(line.toString());
});
//服务端关闭之后
client.on('close',function(){
    console.warn('[System] server close the connection...');
    process.exit(0);
});

//监听错误
client.on('error',function(err){
    console.error('[Error] '+err.message);
});

4、效果

1)服务端效果

服务端应当首先开启端口监听服务

postbird

2)客户端效果

postbird