基本socket.io身份验证

问题描述:

我有以下代码允许用户加入聊天室。基本socket.io身份验证

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,其中一些服务器设置了系统,这限制或断开了太垃圾的用户。考虑这些选项的附加逻辑在服务器端:

  1. 限制用户(即,使其在那里它们发送被忽略的事件),如果他们发出超过一定数目在一段时间内的事件的更;断开/黑名单,如果他们经常或特别过分。
  2. 忽略以不允许状态发射的事件;例如,跟踪连接的套接字的用户名(例如using socket.set),并且如果他们发送另一个join事件,则丢弃它。