2012-07-16 341 views
1

我有以下代碼允許用戶加入聊天室。基本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>'); 
}); 

然而,一個關心我的是:是什麼原因導致用戶發出「加入」與數百個用戶名,垃圾郵件聊天室?我是全新的實時編程,所以我想知道我可以用什麼技術來防止這種行爲。

回答

1

默認情況下,沒有什麼能夠阻止用戶執行此操作。你會想建立在服務器端的安全性來處理這種事情;一個很好的例子是IRC,其中一些服務器設置了系統,這限制或斷開了太垃圾的用戶。考慮這些選項的附加邏輯在服務器端:

  1. 限制用戶(即,使其在那裏它們發送被忽略的事件),如果他們發出超過一定數目在一段時間內的事件的更;斷開/黑名單,如果他們經常或特別過分。
  2. 忽略以不允許狀態發射的事件;例如,跟蹤連接的套接字的用戶名(例如using socket.set),並且如果他們發送另一個join事件,則丟棄它。