×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "block"; document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День Святого Валентина (14 Февраля)
Концерты, выставки, цирки ...
Концерты, выставки, цирки ...
Спектакль "Женитьба" г. Минск 23 января, 27 февраля 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Занятия в тренажерном зале
Спорт занятие
Компьютеры, игры, программирование
Компьютеры, игры, программирование
Объявления ...
Объявления ...
Механизм рулевой с гидроусилителем ШНКФ 453461.425-03
Объявление
Форум (ваши вопросы, обсуждение)
Форум (ваши вопросы, обсуждение)
Search
Programming, development, testing
→
Node.js (это web сервер исполняющий js файлы)
→
Chat (пользователь пишет сообщение и у других появляется сообщение) используя socket.io в Node.js (проект в Visual Studio)
Looked at
7100
times
Chat (пользователь пишет сообщение и у других появляется сообщение) используя socket.io в Node.js (проект в Visual Studio)
last updated: 9 April 2018
Шаг 1)
Запускаем Visual Studio 2013 или другую версию (лучше всего Visual Studio 2017)
Шаг 2)
Создаем новый проект
Нажимаем в меню:
File
→
New
→
Project
Выбираем:
Other Languages
→
JavaScript
→
Node.js
→
Blank 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
Нажимаем правой клавиши мыши на проекте
NodeJsApp1
→
Add
→
New Item
→
HTML file
→
my.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)
запускаем проект
Нажимаем меню
Debug
→
Start Without Debugging
Открываем еще браузер и вводим web адрес
http://localhost:1337
У нас открыто 2 браузера
User Evgen вводит текст и нажимает "Add message"
текст появляется у всех пользователей
← Previous topic
Загрузка html файла и вывод на экран в Node.js (проект в Visual Studio)
Next topic →
Create https localhost certificate for nodejs
Your feedback ... Comments ...
Your Name
Your comment
(www links can only be added by a logged-in user)
+ Picture
Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
Объявления
Объявления
•
Что такое 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