--- id: 589fc831f9fc0f352b528e75 title: Communicate by Emitting challengeType: 2 videoUrl: '' localeTitle: Общение через Emitting --- ## Description
Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . Emit - самый распространенный способ общения, который вы будете использовать. Когда вы выдаете что-то с сервера на «io», вы отправляете имя события и данные во все подключенные сокеты. Хорошим примером этой концепции будет исчисление текущего количества подключенных пользователей каждый раз, когда подключается новый пользователь!
Начните с добавления переменной, чтобы отслеживать пользователей непосредственно перед тем, где вы сейчас слушаете подключения. var currentUsers = 0; Теперь, когда кто-то подключается, вы должны увеличить счетчик перед исчислением счета, поэтому вам нужно добавить инкремент в прослушиватель соединения. ++currentUsers; Наконец, после увеличения счетчика, вы должны испустить событие (все еще внутри прослушивателя соединения). Событие должно быть названо «user count», и данные должны быть просто «currentUsers». io.emit('user count', currentUsers);
Теперь вы можете реализовать способ для вашего клиента слушать это событие! Аналогично прослушиванию соединения на сервере вы будете использовать ключевое слово on .
 socket.on ('user count', function (data) {
  console.log (данные);
}); 
Теперь попробуйте загрузить приложение и выполнить проверку подлинности, и вы должны увидеть в своей клиентской консоли «1», представляющий текущий счет пользователя! Попробуйте загрузить больше клиентов и пройти проверку подлинности, чтобы увидеть, как число увеличивается. Представьте свою страницу, когда вы думаете, что у вас все в порядке.
## Instructions
## Tests
```yml tests: - text: currentUsers определяется testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js").then(data => {assert.match(data, /currentUsers/gi, "You should have variable currentUsers defined");}, xhr => { throw new Error(xhr.statusText); })' - text: Сервер испускает текущий счетчик пользователей при каждом новом соединении testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /io.emit.*("|")user count("|").*currentUsers/gi, "You should emit "user count" with data currentUsers"); }, xhr => { throw new Error(xhr.statusText); })' - text: Ваш клиент прослушивает событие «счет пользователя» testString: 'getUserInput => $.get(getUserInput("url")+ "/public/client.js") .then(data => { assert.match(data, /socket.on.*("|")user count("|")/gi, "Your client should be connection to server with the connection defined as socket"); }, xhr => { throw new Error(xhr.statusText); })' ```
## Challenge Seed
## Solution
```js // solution required ```