我有以下代码允许用户加入房间开始聊天。
server.on('connect', function(data) {
nickname = prompt('What is your name?');
server.emit('join', {name : nickname, room : $('#roomid').val()});
$('#events').append('<li>Welcome, ' + nickname + '!</li>');
});
但是,我担心的一个问题是:是什么阻止用户使用数百个用户名发出“加入”消息,向聊天室发送垃圾邮件?我是实时编程的新手,所以我想知道可以使用什么样的技术来防止这种行为。
最佳答案
默认情况下,没有什么可以阻止用户执行此操作。您需要构建服务器端安全性来处理此类事情; IRC 就是一个很好的例子,其中一些服务器设置了系统,可以限制或断开发送太多垃圾邮件的用户。对于服务器端的附加逻辑,请考虑以下选项:
- 如果用户在一段时间内发出超过一定数量的事件,则限制用户(即忽略他们发送的事件);如果他们经常或特别过度地这样做,请将他们断开连接/列入黑名单。
- 忽略在不允许的状态下发出的事件;例如,在某处跟踪已连接套接字的用户名(即 using
socket.set
),如果它们发送另一个join
事件,则将其丢弃。
关于node.js - 基本的socket.io身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507970/