Пишу игру игру для тестового задания.
Как должно быть: Два пользователя заходят на сервер, выбирают один из предложенных вариантов, кликают по "Жми, если выбор сделан!" и им приходит ответ: если результат совпадает, то появляется alert "Ты выиграл!" у обоих игроков.
Как есть на самом деле: игроки кликают одинаковый результат и ничего не происходит.
Почему так?
Сам код здесь: https://repl.it/repls/PapayawhipRundownShell
// подключение express и socket.io
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var path = require('path');
var port = 8080;
var connections = [];
var playerOne;
var playerTwo;
// массив для хранения текущих подключений
var connections = [];
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
// установка соединения
io.on('connection', function (socket) {
connections.push(socket.id);
if (connections.length > 0) {
console.log('Connected: %s sockets connected', connections.length);
console.log(connections);
}
if (connections.length != 2) {
socket.emit('wait', 'Вас должно быть двое. Ни больше - ни меньше.' );
}
else {
socket.on('send message', function (data) {
if (socket.id = connections[0]) {
playerOne = data;
console.log(playerOne);
} else if (socket.id = connections[1]) {
playerTwo = data;
console.log(playerTwo);
}
})
if ((playerOne) && (playerTwo)){
socket.emit('answer', 'Ты выиграл!' );
}
}
})
server.listen(port, function () {
console.log('app running on port ' + port);
})
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Камень, ножницы, бумага, ящерица, спок.</title>
</head>
<body >
<div>
<fieldset class="ad-form__element">
<label class="ad-form__label" for="type">Выбирай жест!</label>
<select id="type" name="type">
<option value="Спок">Спок</option>
<option value="Камень">Камень</option>
<option value="Ножницы">Ножницы</option>
<option value="Ящерица">Ящерица</option>
<option value="Бумага">Бумага</option>
</select>
</fieldset>
<button class="ad-form__submit" type="submit">Жми, если выбор сделан!</button>
<div id="output"></div>
</div>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
<script>
var socket = io();
var usersChoise = document.querySelector('#type').value;
var btn = document.querySelector('.ad-form__submit');
btn.onclick = function () {
console.log(document.querySelector('#type').value);
// сгенерировать событие отправки сообщения
socket.emit('send message', document.querySelector('#type').value);
}
socket.on('answer', function (data) {
alert(data);
})
</script>
</html>
UPD: я узнал, что из-за срабатывающего выше события 'wait', не приходит ответ с того клиента, у которого он появился. Если его закомментировать, то к серверу приходит оба сообщения, но даже если закомментировать его, то не срабатывает условие для победы.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужна ваша помощьУ меня есть кнопка, по клику она добавляет текст из выбранный настроек
Клик был совершён на кнопкеВ консоле не должно быть ошибки, но она есть
Всем доброго дня! В процессе написания кода для скрапинга, решил поработать над его быстродействиемОбычно я писал что то вроде time