前端通信(socket)
- Node中的net模块提供的前端通信
- H5提供的 webSocket 【 常用于 移动端 】
- pc端低版本浏览器使用 socket.io
服务端:一个总的服务器 例: QQ的服务器(一个整体)
客户端:单个用户使用应用 例:每个人的QQ(多个)
Node中的net模块提供的前端通信
业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器
解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 【 单行读取 】
*使用Node创建服务器
//总服务器
//此文件名server.js
const net = require('net'); //引入net模块
const server = net.createServer(); //创建服务器
const host = 'localhost'; //创建域名
const port = 6868; //创建端口号
const clients = {
};
let count = 0;
//服务器连接客户端
server.on('connection', (client) => {
//服务器通过connection连接客户端
client.name = ++count; //计数,给每一个客户端起名
clients[client.name] = client; //将每一个客户端放入clients中储存起来
//服务器接收信息
client.on('data', msg => {
//服务器通过data事件来接收,客户端发过来的信息;msg 就是客户端发来的信息 , msg这个信息是二进制
console.log(`客户端${
client.name}说:${
msg.toString()}`);
boardCaster(client, msg);
});
//服务器错误报出处理
client.on('error', error => {
// 服务器处理错误报出
console.log('error is: ' + error);
});
//服务器正常下线
client.on('close', () => {
// 服务端接收客户端正常下线行为
delete clients[client.name]; // 从存储client的地方删除下线的客户端
console.log(`客户端${
client.name}下线了`);
});
});
//广播
// 广播就是将所有的客户端以及客户端发来的信息展示在服务端界面上
function boardCaster(client, msg) {
for