Содержание
- 2. В предыдущей лекции Были рассмотрены принципы работы Event loop в Node.js Переменные, объявленные на верхнем уровне,
- 3. В этой лекции Работа с файлами Создаем ТСР-сервер WebSockets
- 4. Работа с файлами Модуль FileSystem входит в дистрибутив Node.js, и, честно говоря, мы его уже использовали
- 5. Рекурсивный обход каталогов var base = 'D:\\Development\\SDAssembla'; var fs = require('fs'); function readDir(base) { fs.readdir(base, function
- 6. fs.readdir(), fs.stat(). Для чтения каталога используется метод fs.readdir(), имеющий аналоги во многих языках программирования. Для определения,
- 7. fs.Stats stats.isFile() - проверяет, является ли объект файлом; stats.isDirectory() - проверяет, является ли объект директорией; stats.isBlockDevice()
- 8. Результаты работы предыдущей программы Все это замечательно, но вот вывод предыдущей программы нас может не устроить.
- 9. Синхронная версия var fs = require('fs'); var base = 'D:\\Development\\SDAssembla\\securedating'; String.prototype.repeat = function (num) { return
- 10. Файлы по папкам в алфавитном порядке var fs = require('fs'); var path = require('path'); var base
- 11. Файлы по папкам в алфавитном порядке Тут мы пользуемся синхронной версией метода (fs.existsSync() ), проверяющего существование
- 12. СopyRecursive var copyRecursive = function (src, dest) { var exists = fs.existsSync(src); var stats = fs.statSync(src);
- 13. fs.mkdirSync(), fs.linkSync() Что тут нового? В самом приеме рекурсивного обхода ресурсов файловой системы точно нет никаких
- 14. Удаление файлов var fs = require('fs'); var path = require('path'); var collection = 'D:\\Development\\SDAssembla\\sorted'; fs.rmdir(collection, function
- 15. Удаление файлов var fs = require('fs'); var collection = 'D:\\Development\\SDAssembla\\sorted'; function removeDir(path){ if (fs.existsSync(path)){ fs.readdirSync(path).forEach( function(file)
- 16. Path Resolve Самый, наверное, интересный метод из небольшого арсенала модуля path это path.resolve(), разрешающий (преобразующий) заданный
- 17. Path Relative Метод path.relative(), преобразует заданный путь в относительный (дополняет метод Resolve) var path = require('path');
- 18. Path.normalize Метод path.normalize() «приводит пути в порядок», то есть удаляет из них все, что там быть
- 19. Path.join Метод path.join() позволяет соединять пути в файловой системе var path = require('path'); var myPath =
- 20. Разные полезные мелочи path.extname() – определяем расширение файла. path.sep - определяем специфичный для платформы разделитель в
- 21. Разные полезные мелочи path.dirname() - определяем имя директории, содержащей файл: path.basename() - определяем базовое имя файла
- 22. __dirname и __filename две глобальные переменные платформы Node.js – __dirname и __filename. Первая хранит имя текущей
- 23. Перемещение по файловой системе Перемещаться по файловой системе (то есть менять рабочую папку) модуль fs не
- 24. Перемещение по файловой системе Так её можно поменять: console.log("The current directory is " + process.cwd()); try
- 25. Работа с файлами var fs = require('fs'); var path = "D:\\Development\\Test\\notes.txt"; fs.open(path, "r+", function (error, fd)
- 26. fs.open Метод fs.open() в качестве первого параметра принимает имя файла, последним служит функция обратного вызова, а
- 27. Чтение на низком уровне var fs = require('fs'); var path = "D:\\Development\\Test\\notes.txt"; fs.open(path, "r+", function (error,
- 28. Чтение на низком уровне Метод fs.read(), получая в качестве аргумента дескриптор файла, читает данные из него,
- 29. Запись на низком уровне Запись в файл происходит по той же схеме (сделаем программу которая записывает
- 30. ReadFile На предыдущем слайде мы создаем свой буфер из заданной строки и пишем его в файл.
- 31. WriteFile Это все - не надо заботиться о получении файлового дескриптора и подготовке буфера - все
- 32. Watching Files Это, наверное, самая интересная возможность модуля fs. С помощью метода fs.watch() мы можем отслеживать
- 33. Watching Files Node.js для получения данных использует именно системные средства. В операционной системе Linux это подсистема
- 34. Потоки var fs = require("fs"); var path = "D:\\Development\\Test\\fluid.blend"; var stream = fs.createReadStream(path); stream.on('readable', function ()
- 35. Потоки Поток можно в любой момент закрыть, вызвав метод stream. close(): stream.on('data', function (chunk) { if
- 36. Stream.pause() & Stream.resume для более гибкой работы с потоком присутствуют методы stream.pause() и stream.resume(): stream.on('data', function
- 37. Веб-сервер на потоках Освоив потоки, мы теперь можем более рационально переписать веб-сервер из лекции №4. В
- 38. Веб-сервер на потоках var http = require('http'); var url = require('url'); var fs = require('fs'); var
- 39. stream.pipe() В таком виде все работает, причем корректно, но на самом деле это только полдела. Даже
- 40. Создаем ТСР-сервер На платформе Node.js он реализован в модуле net, входящем в ядро системы. Построить ТСР-сервер
- 41. Создаем ТСР-сервер var net = require('net'); var server = net.createServer(function (socket) { console.log('Соединение с ' +
- 42. Cокет О сокетах. А что это, собственно, вообще такое? Если у вас такого вопроса не возникает,
- 43. Socket.write var net = require('net'); var server = net.createServer(function (socket) { console.log('Соединение с ' + socket.remoteAddress
- 44. Socket.end() Cтрокой socket.end() мы закрываем сокет; если бы мы этого не сделали, то браузер продолжил бы
- 45. Непрерывная работа сокета var net = require('net'); var server = net.createServer(function (socket) { console.log('Соединение с '
- 47. Socket.on('data‘) Заставим наш сокет слушать пару событий var net = require('net'); var server = net.createServer(function (socket)
- 49. Клиент ТСР-сервера var net = require('net'); var clientSocket = new net.Socket(); clientSocket.setEncoding('utf8'); clientSocket.connect('8080', 'localhost', function ()
- 50. Socket & Buffer При логировании полученных данных мы явным образом привели их значение к строковому виду.
- 51. Ввод данных clientSocket.connect('8080', 'localhost', function () { console.log('connected to server'); clientSocket.write('Hello', function () { process.stdin.resume(); process.stdin.on('data',
- 52. TCP-чат var net = require('net'); var clients = []; var server = net.createServer(function (socket) { clients[clients.length++]
- 53. UDP Сервер Продемонстрируем работу протокола, создав простой сервер, принимающий UDР-пакеты. Обратите внимание, с объектом соединения мы
- 54. UDP клиент var dgram = require('dgram'); var client = dgram.createSocket("udp4"); process.stdin.resume(); process.stdin.on('data', function (data) { client.send(data,
- 56. HTTP - клиент А зачем? Зачем создавать НТТР-клиента, если НТТР-клиент - это браузер? Все просто -
- 57. HTTP - клиент var https = require('https'); var param = { hostname: 'api.privatbank.ua', path: '/p24api/pubinfo?exchange&coursid=3', port:
- 58. HTTP - клиент
- 59. Модуль WS Для того чтобы начать работать с веб-сокетами, нужны всего две вещи - браузер, поддерживающий
- 60. WebSocket Server var webSocketServer = new require('ws'); var webSocketServer = new webSocketServer.Server({ port: 8080 }); webSocketServer.on('connection',
- 61. WebSocket Client onload = function () { var ws = new WebSocket("ws://localhost:8080"); } index
- 62. WebSocket Server Это прекрасно, но пока полнодуплексного соединения, мягко говоря, не наблюдается. Что естественно -взаимодействия по
- 63. WebSocket Client На клиенте напишем код для приема сообщений: onload = function () { var ws
- 64. Реализация WebSocket-чaтa Сначала сделаем простую форму для отправки сообщений и jаvаSсriрt-обработчик onload = function () {
- 65. Реализация WebSocket-чaтa var webSocketServer = new require('ws'); var wss = new webSocketServer.Server({ port: 8080 }); var
- 66. Выводы В этой лекции была рассмотрена работа с файловой системой. Были изучены процедуры обхода каталогов, чтения,
- 68. Скачать презентацию