试想一下,上机课,你和你心爱的姑娘坐了好远好远,三个小时的寂寞,谁能懂,在机房,或信号差,或老师管的严,不让玩手机。
又试想一下,上机课,你想在你心爱的姑娘面前表现出一副大牛的样子,这样,之后课设,作业,她便会不自居的向你靠来,成为人赢,就在现在。
这篇文章教大家做一个局域网的简易聊天室,一百行代码,实现你的装哔~梦。
前期准备,部署 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', () => {
});
});
});
思路,访问监听的端口号,输入用户名和消息,发送至服务端,服务端接受后,循环广播至每个客户端,实现聊天功能。