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
包管理器 | 安装命令 |
---|
npm | npm install ws --save |
yarn | yarn 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("---------------------------------------------------");