本来以为自己对websocket 还是掌握一些,但是突然发现别人写的服务器在连接的时候就可以获得token,自己还是太菜了,所以整理一个,主要是新的websocket在监听connection
的时候可以多一个req参数 那么在url中就能可以拿到连接带过来的参数了,学无止境。nodejs威武
var _ = require('lodash');
var qs = require('qs');
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 9999 });
let list = [];
wss.on('connection', function connection(ws,req) { //用于获取连接时候的参数 eg: ws://ip:port/path?token=xxxxxx
let url = req.url;
console.log('url is ' + url); // "/path?token=xxxxxx"
let prarms = qs.parse(_.split(url,'?')[1]); // token=xxxxxx
console.log('url is ' + JSON.stringify(prarms));// {token:xxxxxxx}
list.push(ws);
ws.on('message', function incoming(message) {
console.log('收到数据' + message);
ws.send('server get message' + message);
console.log('数据发送成功');
});
ws.on('error', function (error) {
console.log('错误' + error);
});
ws.on('open', function (e) {
ws.send('open');
});
ws.on('close', function (e) {
_.pull(list, ws);
console.log('在线人数' + list.length);
})
});
网友评论