Я работаю на странице чата, где вы сначала задаете свое имя пользователя, а оно устанавливает значение имени пользователя в файлах cookie.после этого он загружает различные поля ввода, откуда вы можете отправлять сообщения в режиме реального времени.В этот момент вы можете перезагрузить страницу, и она выдаст всплывающее окно, в котором будет отображаться приветственное сообщение со значением имени, сохраненным в файлах cookie, которое также просто снова установит его в качестве имени пользователя и загрузит страницу чата.
Проблема заключается в том, что я хочу, чтобы можно было запретить установку нескольких дубликатов имени из поля ввода настройки имени пользователя, но разрешить множественное повторение имени пользователя внутри массива с помощью файлов cookie.
эта функция устанавливает исходное имя пользователя:
//index.html
function setUsername() {
var textbox = document.getElementById("name");
var txtboxval = textbox.value;
if(textbox.value.length <= 20 && textbox.value.length >= 4){
socket.emit('setUsername', document.getElementById('name').value);
setCookie("username", txtboxval, 30);
socket.on('userExists', function(data) {
});
}
else{
alert("The name has to be at least 4 characters long");
return false;
}
};
, и эти два устанавливают его при загрузке cookie:
//index.html
function setUsername2() {
var nimi = getCookie('username');
socket.emit('setUsername', nimi);
}
function checkCookie() {
var user = getCookie("username");
if (user != "") {
alert("Welcome again " + user);
setUsername2();
document.body.innerHTML = '<div class="wrapper"><div class="messagebox"><input type = "text" id = "message" placeholder = "Write your message here">\
<button type = "button" id="sending" name = "button" onclick = "sendMessage()">Send</button></div>\
<div id = "message-container"></div></div>';
}
}
теперь это фактически устанавливает имя пользователя в массив, в который оно его копаетна странице index.html:
//app.js
users = [];
io.on('connection', function(socket){
console.log('an user connected');
console.log(users);
socket.on('setUsername', function(data) {
console.log(data);
users.push(data);
socket.emit('userSet', {username: data});
console.log(users);
});
Мне бы хотелось, чтобы этот фрагмент кода запускался при первой установке имени пользователя, а не при загрузке из файлов cookie:
//app.js
if(users.indexOf(data) > -1) {
socket.emit('userExists', data + ' Username is already taken.');
} else {
users.push(data);
socket.emit('userSet', {username: data});
console.log(users);
}
Isесть что-то, чего мне не хватает, почему я не могу заставить его работать так, как мне бы этого хотелось?Если что-то неясно, пожалуйста, спросите.