基本的socket.ioauthentication

我有以下代码允许用户join一个房间开始聊天。

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>'); }); 

然而,我担心的一个问题是:是什么阻止用户发出与数百个用户名的“join”,垃圾邮件的聊天室? 我是全新的实时编程,所以我想知道什么样的技术可以用来防止这种行为。

默认情况下,阻止用户执行此操作并没有什么特别之处。 你会想build立在服务器端的安全性来处理这种事情; 一个很好的例子就是IRC,一些服务器设置了系统,限制或者断开太垃圾的用户。 考虑在服务器端的其他逻辑这些选项:

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