ws
1.1、ws简介
是什么 ?:a simple to use, blazing fast and thoroughly tested WebSocket client and server for Node.js
开发语言:Node.js
源码仓库:https://github.com/websockets/ws
1.2、通过包管理器安装ws
包管理器安装命令
npmnpm install ws --save
yarnyarn add ws
1.3、导入ws模块
const ws = require('ws');
1.4、ws API
const WebSocket = require('ws');

const wsServer = new WebSocket.Server({ host: '0.0.0.0', port: 9090 });

wsServer.on('headers', (headers, request) => {
    console.log("\n--------------- HandShake Begain ------------------");
      //console.dir(request, {depth:3});

    console.log(request.method + " " + request.url + " HTTP/" + request.httpVersion);

    const requestHeaders = request.headers;
    for(const key in requestHeaders) {
        console.log("%s: %s", key, requestHeaders[key]);
    }
    
    console.log("");

    headers.forEach(item => {
        console.log(item);
    });
    console.log("--------------- HandShake End ---------------------\n");
});

wsServer.on('listening', () => {
    console.log('listening:');
    const address = wsServer.address();
    for(const key in address) {
        console.log(key + " : " + address[key]);
    }
    console.log("---------------------------------------------------");
});

wsServer.on('close', () => {
    console.log('closed!');
    console.log("---------------------------------------------------");
});

wsServer.on('error', error => {
    console.log('error = ' + error);
    console.log("---------------------------------------------------");
});

wsServer.on('connection', (wsClient, request) => {
    //console.dir(wsClient, {depth:3});
      
    const size = wsServer.clients.size;
    const message = "第" + size + "个访客";
      
    console.log(request.connection.remoteAddress + " connected! " + message);
    console.log("---------------------------------------------------");

    wsClient.send(message);

    wsClient.on('message', message => {
        console.log("receive message : " + message);
        console.log("---------------------------------------------------");
        wsClient.send("服务端回复:" + message);
    });

    wsClient.onClose = event => {
        console.log("onClose() event : " + event.name);
    };
});

console.log("---------------------------------------------------");