Не срабатывает условие в node.js

203
05 марта 2019, 00:20

Пишу игру игру для тестового задания.

Как должно быть: Два пользователя заходят на сервер, выбирают один из предложенных вариантов, кликают по "Жми, если выбор сделан!" и им приходит ответ: если результат совпадает, то появляется 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', не приходит ответ с того клиента, у которого он появился. Если его закомментировать, то к серверу приходит оба сообщения, но даже если закомментировать его, то не срабатывает условие для победы.

READ ALSO
Изменить тип текста по select

Изменить тип текста по select

Нужна ваша помощьУ меня есть кнопка, по клику она добавляет текст из выбранный настроек

200
event.target не работает по отношению к кнопке

event.target не работает по отношению к кнопке

Клик был совершён на кнопкеВ консоле не должно быть ошибки, но она есть

185
Как узнать, что сработал JavaScript?

Как узнать, что сработал JavaScript?

Всем доброго дня! В процессе написания кода для скрапинга, решил поработать над его быстродействиемОбычно я писал что то вроде time

221