Simple spam protection for socket.io 2.x
npm install socket-protect> - Nodejs v8.x
> - Socket.io v2.x
----------
npm install socket-protect --save
----------
``js`
const defaultOpts = {
origin: [],
secure: true,
xdomain: false,
debug: false,
ipLimit: 0,
login: {
required: false,
loginfn: noop,
timeout: 3000 // 3 seconds
},
ddos: {
enabled: true,
timeout: 50 // 50 ms
}
};
----------
`js
const app = require('http').createServer(handler);
const io = require('socket.io')(app, {
pingInterval: 10000,
pingTimeout: 5000
});
const sp = require('socket-protect');
app.listen(8080, () => {
console.log('Server listening to port ', 8080);
});
function handler(req, res) {
res.writeHead(200);
res.end('Hello World');
}
const auth = (socket, cb) => {
socket.on('auth', () => {
cb(true);
});
};
const protectOpts = {
origin: ['http://s.bitsler.com'],
ipLimit: 4,
secure: true,
xdomain: true,
debug: false,
login: {
required: true,
loginfn: auth,
timeout: 3000 // 3 seconds
},
ddos: {
enabled: true,
timeout: 500 // 500 ms
}
};
io.use((socket, next) => {
sp.protectHandshake(io, socket, protectOpts);
next();
});
io.on('connection', socket => {
sp.protectConnect(socket, protectOpts);
// put your other events
socket.on('message', data => {
console.log(data);
});
});
``