美文网首页
scoket与readline

scoket与readline

作者: 小虾米前端 | 来源:发表于2017-08-16 09:23 被阅读0次

    一:什么是scoket?
    网络上的两个程序通过一个双向的通信链接实现数据的交换,这个连接的一端称为一个 socket
    【boothcdn(有在线bootstrap,然后将代码拷贝至本地)
    cdn::①内容分发网络(把js/css/html等静态资源放到cdn去)
    ②就近原则(提高网页访问速度)】

    二:通信流程

    Paste_Image.png

    三:NodeJS 基于其自带 net 模块实现 socket(重要)
    ①服务端代码:server.js
    var net = require(‘net’);
    // 创建一个 socket 服务
    var socket = net.createServer();
    // 监听一个端口号
    socket.listen(3000);
    // 监听 connection 事件
    socket.on(‘connection’, function(client) {
    // 通过 data 事件接收客户端的消息
    client.on(‘data’, function(msg) {
    console.log(msg.toString());
    });
    // 通过 write 方法给客户端发消息
    client.write(‘hello’);
    })
    ②客户端代码:client.js
    var net = require(‘net’);
    // 创建一个 客服端对象,通过 new net.Socket();
    var client = new net.Socket();
    // 通过 connect 方法连接到服务器
    client.connect(3000, ‘127.0.0.1’, function() {
    // 链接成功
    // 给服务端发消息
    client.write(‘大家好,我是xxx’);
    // 通过 data 事件接收服务端的消息
    client.on(‘data’, function(msg) {
    console.log(msg.toString());
    })
    })

    四:NodeJS – 自带模块 readline
    1:引入readline模块
    2:创建readline实例
    var rl = readline.createInterface(process.stdin, process.stdout)
    3:调用实例方法或者监听实例事件
    readline.question()
    readline.on(‘line’)
    readline.close()
    readline.setPrompt()
    readline.prompt()
    案例:实现 输入输出的操作
    // 1. 引入自带模块 readline
    var readline = require('readline');

    // 2. 创建 readline 实例对象
    var rl = readline.createInterface(process.stdin, process.stdout);

    // 3. 就是去是用 他的 方法或者 事件
    // 提问的方法 question

    // rl.question('你叫什么名字?', function(answer) {
    // console.log(answer);
    // })

    // 监听 line 事件
    console.log('请选择你要的服务:');
    console.log('1: 洗脚');
    console.log('2: 搓背');
    console.log('3: 按摩');
    console.log('4: 不好意思,进错门了,88');

    rl.on('line', function(msg) {
    switch (msg) {
    case "1":
    console.log('洗脚 50元一次');
    break;
    case "2":
    console.log('搓背 100元一次');
    break;
    case "3":
    console.log('按摩 1000元一次');
    break;
    case "4":
    // 关闭当前的输入输出
    rl.close();
    break;
    default:
    console.log('对不起,没有这个服务,请重新选择');
    break;
    }
    })

    五:WebSocket
    构建网页版的聊天室:
    1个服务端(使用 nodejs 作为后台语言,借助外部模块 ws )
    1个客户端(这里的客户端不是 cmd 而是一个 html页面 )
    ①服务端:server.js
    // 引入 ws 模块的 Server 对象
    var socket = require(‘ws’).Server;
    // 创建 socket 服务
    var ws = new socket({port: 3000});
    // 监听 connection 事件
    ws.on(‘connection’, function(client) {
    // 通过 message 事件接收客户端的消息
    client.on(‘message’, function(msg) {
    console.log(msg.toString());
    });
    // 通过 send 方法给客户端发消息
    client.write(‘hello’);
    })
    ②客户端:client.html js 实现
    // 连接服务器
    var client = new WebSocket(‘ws://127.0.0.1:3000’);
    // 通过 message 事件接收服务端消息
    client.onmessage = function(e) {
    // 注意这里的 e 是事件对象 要在消息是 e.data
    }
    // 通过 send 方法给服务端发送消息
    client.send(‘xxxx’);

    相关文章

      网友评论

          本文标题:scoket与readline

          本文链接:https://www.haomeiwen.com/subject/pegbrxtx.html