我正在使用socket.io構建一個聊天室應用程序,但我有問題了解正確和最簡單的方法來更新聊天室用戶列表。在JavaScript/jQuery中管理用戶列表的最佳方法是什麼?
在當客戶端加入它發送的用戶列表中的聊天室,並更新使用下面的代碼的用戶列表面板中的時刻:
socket.on('names', function(channel,nicks){
for (var nick in nicks) {
$('#users').append('<li class="list-group-item" id="' + nick + '">' + nick + '</li>');
}
});
,但目前它沒有考慮到當另一用戶在此點之後加入或離開,因此用戶列表在客戶端加入之後的整個持續時間內都是相同的。
socket.on('join', function(channel,nick){
// need to add the user to the user list, sort the user list
// alphabetically and then update the list group html
});
socket.on('part', function(channel,nick){
// need to delete the user from the user list, sort the user list
// alphabetically and then update the list group html
});
socket.on('quit', function(nick){
// need to delete the user from the user list, sort the user list
// alphabetically and then update the list group html
});
什麼,我應該看完成什麼,我需要在這裏:當其他用戶加入或離開
這些事件被觸發?
我猜測,而不是中繼服務器響應,並從中建立HTML,我應該在客戶端保留一個用戶列表數組,根據服務器的響應更新,然後重新構建HTML 。只需要指向正確的方向真的...
感謝您的詳細解答,我一直不在,所以直到現在才注意到它。我理解(我認爲)關於使用React,但我不明白你的例子''設置套接字偵聽器',現在,你所要考慮的就是確保模型('this.state.users ')是最新的,只要你用'this.setState'更新它,React就會完成剩下的工作。「你可以給我一個例子,說明如何將它集成到當前代碼中(我把套接字事件放在現有問題中)。只是一個簡單的例子,我會解決其餘的問題。謝謝。 – Jack