JavaScript. Подробное руководство, 6-е издание
Шрифт:
var msg = nick + ": " + input.value; // Имя пользователя и текст
socket.send(msg); // Отправить через сокет
input.value = ""; // Подготовиться к вводу следующего сообщения
}
};
</script>
<!-- Пользовательский интерфейс - это единственное поле ввода -->
<!-- Новые сообщения в чате будут появляться перед этим элементом -->
<input id="input” style="width:100%"/>
В примере 22.17 демонстрируется реализация сервера чата, основанного на веб-сокетах, которая предназначена для работы под управлением интерпретатора Node (раздел 12.2). Сравните этот пример с примером 18.17, чтобы увидеть, что веб-сокеты упрощают не только клиентскую часть реализации чата, но и серверную.
Пример 22.17 Сервер чата на основе веб-сокетов, выполняющийся под управлением Node
/*
* Этот серверный сценарий на языке JavaScript предназначен для выполнения
* под управлением NodeJS. Он играет роль сервера веб-сокетов, реализованного поверх
* HTTP-сервера с использованием внешней библиотеки websocket, которую можно найти
* по адресу: https://github.com/miksago/node-websocket-server/ . При обращении
* к ресурсу "/" он возвращает HTML-файл клиента чата. В ответ на обращение к любому
* другому ресурсу возвращается код 404. Сообщения принимаются посредством протокола
* веб-сокетов и просто рассылаются по всем активным соединениям.
*/
var http = require('http'); // Использовать HTTP-сервер в Node
var ws = require('websocket-server'); // Использовать внешнюю библиотеку
// Прочитать исходный файл с реализацией клиента чата. Используется ниже,
var clientui = require('fs').readFileSync("wschatclient.html");
// Создать НТТР-сервер
var httpserver = new http.Server;
// Когда HTTP-сервер получит новый запрос, будет вызвана эта функция
httpserver.on("request”, function (request, response) {
// Если запрошен ресурс "/", отправить реализацию клиента чата,
if (request.иrl === "/") { // Запрошена реализация клиента чата
response.writeHead(200, {''Content-Type”: "text/html”});
response.write(clientui); response.end;
}
else { // В ответ на любой другой запрос отправить код 404 "Not Found"
response.writeHead(404);
response.end;
}
});
// Обернуть HTTP-сервер сервером на основе веб-сокетов
var wsserver = ws.createServer({server: httpserver});
// Вызывать эту функцию при получении новых запросов на соединение
wsserver.on("connection", function(socket) {
socket.send("Добро пожаловаь в чат."); // Приветствовать нового клиента
socket.on("message", function(msg) { // Принимать сообщения от клиента
wsserver.broadcast(msg); // И рассылать их всем остальным
});
});
// Запустить сервер на порту 8000. Запуск сервера на основе веб-сокетов
// приводит также к запуску HTTP-сервера. Для его использования подключайтесь
// по адресу http://localhost:8000/ . wsserver.listen(8000);
III
Справочник по базовому JavaScript
Эта часть книги представляет собой справочник по всем классам, свойствам и методам базового прикладного программного интерфейса JavaScript. В справочнике описываются следующие классы и объекты, в алфавитном порядке:
Arguments
Поделиться:
Популярные книги
Железный Воин Империи II
2. Железный Воин Империи
Фантастика:
фэнтези
попаданцы
аниме
5.75
рейтинг книги
Дважды одаренный. Том VIII
8. Дважды одаренный
Фантастика:
боевая фантастика
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Гримуар тёмного лорда I
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том VII
7. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 6
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Тринадцатый XI
11. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Первый среди равных. Книга II
2. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Герой. Том 4
Последний герой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Вагант
6. Ушедший Род
Фантастика:
боевая фантастика
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Личник
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Наномашины, сынок! Том 1
1. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 6
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00