dir.by  
  Поиск  
Программирование, разработка, тестирование
Node.js (это web сервер исполняющий js файлы)
Chat (пользователь пишет сообщение и у других появляется сообщение) используя socket.io в Node.js (проект в Visual Studio)
  Посмотрели 6426 раз(а)    
 Chat (пользователь пишет сообщение и у других появляется сообщение) используя socket.io в Node.js (проект в Visual Studio) 
последнее обновление: 9 апреля 2018
Шаг 1) Запускаем Visual Studio 2013 или другую версию (лучше всего Visual Studio 2017)
Шаг 2) Создаем новый проект
Нажимаем в меню: FileNewProject
Выбираем: Other LanguagesJavaScriptNode.jsBlank Node.js Web Application
Шаг 3) В файле server.js напишем такой код:
  JavaScript     Файл J:/NodeJsApp1/server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

// load html
app.get('/', function (req, res) {
     res.sendFile(__dirname + '/my.html');
});

// message 'connection'
io.on('connection', function (socket) {
    
     // добавляем user
     Users.Add(socket);
    
     // message 'disconnect'
     socket.on('disconnect', function (msg) {
          Users.Delete(socket); // delete user
     });
    
     // message 'User entered Name'
     socket.on('User entered Name', function (userName) {
          socket.userName = userName;
     });
    
     // message 'add message'
     socket.on('add message', function (text) {
          // send message "user added message" to all users
          io.emit("user added message", { 'name': socket.userName, 'message': text });
     });
});

// web server
var port = process.env.PORT || 1337;
http.listen(port, function () {
     console.log('listening web server');
});

///// my utils /////////
var Users = {
     _sockets: [],// массив socket
    
     Add: function (curSocket) {
          // add user
          this._sockets.push(curSocket);
         
          // LOG!!!
          console.log('user id=' + curSocket.conn.id + ' connected');
     },
    
     Delete: function (curSocket) {
          for (var i = (this._sockets.length - 1); i >= 0; i--) {
               // delete
               if (this._sockets[i] == curSocket)
                    this._sockets.splice(i, 1);
          }
         
          // LOG !!!
          console.log('user id=' + curSocket.conn.id + ' disconnected');
     }
}
Описание файла server.js
Фрагмент кода
Что означает
Файл server.js
io.on('connection', function (socket) {

// добавляем user
Users.Add(socket)
...
});
означает что мы обработаем стандартное событие 'connection'
Обработчиком события является функция
function (socket) {
// добавляем user
Users.Add(socket)
...
}


событие 'connection' вызывется как только в my.html файле вызовется код:
<script>
var socket = io();
</script>
Файл server.js
socket.on('disconnect', function (msg) {
Users.Delete(socket); // delete user
});
означает что мы обработаем стандартное событие 'disconnect'
Обработчиком события является функция
function (msg) {
Users.Delete(socket); // delete user
}


событие 'disconnect' вызывется когда мы закроем страницу или нажмем refresh (перегрузим страницу)
Файл server.js
socket.on('User entered Name', function (userName) {
socket.userName = userName;
});
означает что обработаем мое событие (я ввел свое название) 'User entered Name'
Обработчиком события является функция
function (userName) {
socket.userName = userName;
}


событие 'User entered Name' вызывется как только в my.html файле вызовется код:
<script>
...
socket.emit("User entered Name", elem_userName.value);
...
</script>
Файл server.js
socket.on('add message', function (text) {
// send message "user added message" to all users
io.emit("user added message", { 'name': socket.userName, 'message': text });
});
означает что обработаем мое событие (я ввел свое название) 'add message'
Обработчиком события является функция
function (text) {
// send message "user added message" to all users
io.emit("user added message", { 'name': socket.userName, 'message': text });
}


событие 'add message' вызывется как только в my.html файле вызовется код:
<script>
...
socket.emit("add message", elem.value);
...
</script>
Шаг 4) добавим новый файл my.html
Нажимаем правой клавиши мыши на проекте NodeJsApp1AddNew ItemHTML filemy.html
В файле my.html напишем такой код:
  Html     Файл J:/NodeJsApp1/my.html
<html>

<!-- head -->
<head>
<title>My chat</title>
</head>

<!-- body -->
<body>
     <!-- HTML user Name -->
     <div id='SECTION_UserName' style='padding-top:15px;'>
          <div>User name:</div>
          <input type='text' id='elemID_UserName' autofocus />
<input type='submit' value='Ok' onclick='StoreUserName();' style='color:green; font-weight:700;' />
     </div>

     <!-- HTML messages -->
     <div id='SECTION_messages' style='padding-top:15px; display:none;'>
Your message:
<div style='padding-bottom:15px;'>
<textarea type='text' id='myMessage' size='40' rows='4' cols='30'></textarea>
</div>
<input type='submit' value='Add message' onclick='AddMessage();' style='font-weight:700;' />
<div id='messages_history' style='padding-top:15px;'>
</div>
     </div>

<!-- java script -->
<script src="/socket.io/socket.io.js"></script>
<script>
// create socket
var socket = io();

// receive message "user added message"
socket.on('user added message', function (msg) {
// html element
var elem = document.getElementById('messages_history');
elem.innerHTML += '<u>' + msg.name + '</u>' + ': ' + msg.message + '<BR>';
          });
</script>

<script>
function StoreUserName()
{
// html element
var elem_userName = document.getElementById('elemID_UserName');

// send message "User entered Name"
               socket.emit("User entered Name", elem_userName.value);

// show user name
               document.getElementById('SECTION_UserName').innerHTML = "User: " + '<b><font color=green>' + elem_userName.value + '</font></b>';

// show Div with messages
               document.getElementById('SECTION_messages').style.display = "";

// set focus
               document.getElementById('myMessage').focus();
}

function AddMessage() {
// html element
var elem = document.getElementById('myMessage');

// send message "add message"
socket.emit("add message", elem.value);

// clear
elem.value = "";
}
</script>
</body>

</html>
Описание файла my.html
Фрагмент кода
Что означает
Файл my.html
<script>
...
socket.on('user added message', function (msg) {
// html element
var elem = document.getElementById('messages_history');
elem.innerHTML += '<u>' + msg.name + '</u>' + ': ' + msg.message + '<BR>';
});
...
</script>
означает что обработаем мое событие (я ввел свое название) 'user added message'
Обработчиком события является функция
function (msg) {
// html element
var elem = document.getElementById('messages_history');
elem.innerHTML += '<u>' + msg.name + '</u>' + ': ' + msg.message + '<BR>';
}


событие 'user added message' вызывется как только в server.js файле вызовется код:
io.emit("user added message", { 'name': socket.userName, 'message': text });
На заметку!
• серверная функция socket.emit(message, data) отсылает конкретному пользователю data
• серверная функция io.emit(message, data) отсылает всем пользователя data
Шаг 5) добавим express и socket.io пакеты
Нажимаем в меню: Tools → NuGet Package Manager → Package Manager Console
В командной строке пишем:
npm install --save express

ждем и потом пишем:
npm install --save socket.io

Подробнее о добавлении npm пакетов...
Шаг 6) запускаем проект
Нажимаем меню DebugStart Without Debugging
Открываем еще браузер и вводим web адрес http://localhost:1337
У нас открыто 2 браузера
User Evgen вводит текст и нажимает "Add message"
текст появляется у всех пользователей
 
← Предыдущая тема
Загрузка html файла и вывод на экран в Node.js (проект в Visual Studio)
 
Следующая тема →
Create https localhost certificate for nodejs
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
Что такое Node.js ?
Как узнать версию Node.js ?
Установка Node.js (скачиваем и устанавливаем для Windows)
Как обновить версию Node.js (установить последнюю версию) ?
npm в Node.js
Что такое npm в Node.js?
Как узнать версию npm (Node.js) ?
Как обновить версию npm (установить последнюю версию) ? | Node.js
Файл package.json в Node.js
Разница между тильдой(~) и крышкой(^) в package.json | Node.js
Файл package-lock.json в Node.js
"npm init" | Результат: создает пустой файл package.json и заполняет этот файл данными по умолчанию | Node.js
"npm install имя_пакета" | Результат: устанавливает JavaScript библиотеку (пакет) | Например выполняем в командной строке "npm install jquery" | добавит jQuery библиотку в папку node_modules | Node.js
"npm install" | Результат: устанавливает JavaScript библиотеки (пакеты) которые указаны в файле package.json | Node.js
"npm list -g" (посмотреть список всех установленных глобальных пакетов) | Node.js
"npm install -g имя_пакета" (глобальная установка пакета) | Node.js
"npm uninstall -g имя_пакета" (глобальное удаление пакета) | Node.js
Выполняем в командной строке "npm run EvgenConvertCSS" | Файл package.json вот такой: "scripts": {"EvgenConvertCSS": "node-sass --include-path scss 1.scss 1.css"} | Node.js
Выполняем в командной строке "npm run EvgenMyCommand" | Файл package.json вот такой: "scripts": {"EvgenMyCommand": "mkdir AAA"} | Node.js
Выполняем в командной строке "npm run MyScript1" | Файл package.json вот такой: "scripts": {"MyScript1": "npm run MyScript2"} | Node.js
watch опция в npm скриптах (наблюдаем за изменениями в файлах)
Отладка NodeJS
Отладка Node.js. Смотрим значения переменных, стэк функций, breakpoints в Visual Studio Code
Пишем Node.js приложение в текстовом редакторе (Notepad, Far)
Новое Node.js приложение (создаем приложение в текстовом редакторе, запуск в console)
Добавляем express пакет в Node.js (в Windows console)
Загрузка html файла и вывод на экран в Node.js (создаем приложение в текстовом редакторе, запуск в console)
Используем модуль socket.io
Простое приложение с socket.io в Node.js (создаем приложение в текстовом редакторе, запуск в console)
Пишем Node.js проект в Visual Studio Code
Новый Node.js проект (проект создаем в Visual Studio Code)
Создаем новый Node.js проект с websocket (проект создаем в Visual Studio Code) | client & server
Пишем Node.js проект в Visual Studio
Новый Node.js проект (проект создаем в Visual Studio)
Добавляем express пакет в Node.js (в Visual Studio)
Загрузка html файла и вывод на экран в Node.js (проект в Visual Studio)
Chat (пользователь пишет сообщение и у других появляется сообщение) используя socket.io в Node.js (проект в Visual Studio)
https localhost certificate
Create https localhost certificate for nodejs
Как устроены модули в Node.js (require, exports)
Что такое модули в Node.js ?
Как устроена внутри функция require и что происходит когда пишем require("Имя_Модуля") в Node.js
Создаем свой модуль в Node.js
Пишем и подключаем свой модуль в Node.js
Встроенные модули Node.js
'Express' модуль Node.js !!!!!!!!!!!!
Хостинг Node.js на вашем сайте
Хостинг и установка Node.js на вашем сайте. Настройка Node.js в cPanel
В Node.js меняю js файл а отображается старый кэшированный js файл. Перезапустить Node.js на вашем сайте в cPanel
Добавляем npm пакеты в Node.js на вашем сайте (используем cPanel)
Error during WebSocket handshake... Хостинг Node.js на вашем сайте
Heroku.com бесплатный сервис. Запуск вашего Node.js приложения на Heroku.com
Для использования Heroku.com нужно установить: Git, Node.js
Регистрация на сайте Heroku.com
Инсталяция коммандной строки "Heroku CLI"
"Heroku CLI" работает очень медленно для Windows
Запуск вашего Node.js приложения на Heroku.com
WWW сайты для изучения Node.js
Сайты для изучения Node.js

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика