美文网首页
//如何在机房开心的聊天。(建立node聊天室)

//如何在机房开心的聊天。(建立node聊天室)

作者: 郝梓淳 | 来源:发表于2017-01-31 23:10 被阅读0次

    试想一下,上机课,你和你心爱的姑娘坐了好远好远,三个小时的寂寞,谁能懂,在机房,或信号差,或老师管的严,不让玩手机。
    又试想一下,上机课,你想在你心爱的姑娘面前表现出一副大牛的样子,这样,之后课设,作业,她便会不自居的向你靠来,成为人赢,就在现在。
    这篇文章教大家做一个局域网的简易聊天室,一百行代码,实现你的装哔~梦。
    前期准备,部署 node 环境。
    为什么要用NODE?它足够小,比JAVA /C++ 部署方便得多,JS够简单,记事本就能写出你华丽的代码。废话不多说,开始。
    用到API,node.net.
    //首先建立服务端

    constnet = require('net');
    // 用于存储所有的连接
    var clients = [];
    var port =2080; //定义服务器端口
    server.listen(port, (err) => {
    if(err) {
    console.log('端口被占用');
    return false;
    }
    console.log(`服务端正常启动监听【${port}】端口`);
    })
    varserver = net.createServer((socket) => {
    clients.push(socket);
    console.log(`Welcome${socket.remoteAddress}to ${port} chatroom`);
    functionboardcast(signal) {
    console.log(signal);
    // 肯定有用户名和消息
    var username = signal.from;
    var message = signal.message;
    // 我们要发给客户端的东西
    var send = {
    procotol: signal.procotol,
    from: username,
    message: message
    };
    // 广播消息
    clients.forEach(client=> {
    client.write(JSON.stringify(send));
    });
    }
    // 有任何客户端发消息都会触发
    socket.on('data', (chunk) => {
    try{
    var signal = JSON.parse(chunk.toString().trim());
    var procotol = signal.procotol;
    switch(procotol) {
    case'boardcast':
    boardcast(signal);
    break;
    default:
    socket.write('啥,你想吃日新楼?');
    break;
    }
    }catch(error) {
    socket.write('弄啥咧!');
    }
    });
    });
    

    具体思路,设置服务器监听端口,客户端接入时,列入数组,有消息进来,选择消息传播方式。这里设置boardcast 广播模式,消息循环发送到所有客户端,完成简易聊天功能。
    下面开始完成客户端

    // 创建于服务端的连接
    varserver = net.connect({ port:2080, host:'/*你机器的端口*/'}, () => {
    console.log(`Welcome${name}to 2080 chatroom`);
    // 监听服务端发过来的数据
    server.on('data', (chunk) => {
    try{
    var signal = JSON.parse(chunk.toString().trim());
    var procotol = signal.procotol;
    switch(procotol) {
    case'boardcast':
    //广播模式接受数据。
    console.log('\nboardcast');
    console.log(signal.from +'>');
    console.log(signal.message);
    //收到聊天内容打印出来
    rl.prompt();
    break;
    default:
    server.write('中午吃啥');
    break;
    }
    }catch(error) {
    server.write('弄啥咧!');
    }
    });
    rl.setPrompt(name +'> ');
    rl.prompt();
    rl.on('line', (line) => {
    var send = {
    procotol:'boardcast',
    from: name,
    message: line.toString().trim()
    };
    server.write(JSON.stringify(send));
    rl.prompt();
    }).on('close', () => {
    });
    });
    });
    

    思路,访问监听的端口号,输入用户名和消息,发送至服务端,服务端接受后,循环广播至每个客户端,实现聊天功能。

    学弟学妹们,你们下学期的课设,有一项加分项就是实现聊天功能,代码放到这里咯。不懂随时来问。 //如何在机房开心的聊天。(建立node聊天室)

    相关文章

      网友评论

          本文标题://如何在机房开心的聊天。(建立node聊天室)

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