Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

// создать на их основе объекты и добавить их в хранилище.

for(var і = 0; і < lines.length; i++) {

var fields = lines[i].split(",");// Значения через запятую

var record = { // Сохраняемый объект

zipcode: fields[0], // Все свойства - строки

city: fields[1],

state: fields[2],

latitude: fields[3],

longitude: fields[4]

};

//
Вся прелесть IndexedDB API в том, что хранилище

// объектов *по-настоящему* просто использовать.

// Следующая строка добавляет запись:

store.put(record); // Или add, чтобы избежать затирания

}

status("Инициализация базы данных, загружено записей:

+ numlines + ".");

}

if (e.type == "load") {

// Если это было последнее событие load, значит, мы отправили в базу

// данных все сведения о почтовых индексах. Но, так как мы только

// что обработали порядка 40000 записей, они все еще могут записываться

// в хранилище. Поэтому мы выполним простой запрос. Когда он будет

// успешно выполнен, это послужит сигналом, что база данных готова

// к работе, и наконец можно удалить строку сообщения и вызвать

// функцию f, которая так давно была передана функции withDB

lookupCity("02134",

function(s) { // Allston, MA

document.body.removeChild(statusline); withDB(f);

});

}

}

}

}

</script>

</head>

<body>

<р>Введите почтовый индекс, чтобы отыскать город:</р>

Индекс: <input onchange="displayCity(this.value)"></input>

Город: <output id="city"></output>

</div>

<div>

<р>Введите
название города (с учетом регистра символов, без названия штата),

чтобы отыскать все города с этим названием и их почтовые индексы:</р>

Город: <input onchange="displayZipcodes(this.value)"></input>

<div id="zipcodes"></div>

</div>

<р><і>Зтот пример работает только в Firefox 4 и Chrome 11.</i>

<р><і>Выполнение первого запроса может занять длительное время.</і></р>

<р><і>Вам может потребоваться запустить Chrome с

ключом --unlimited-quota-for-indexeddb</i>

</body>

</html>

22.9. Веб-сокеты

В главе 18 демонстрируется, как клиентские сценарии на языке JavaScript могут взаимодействовать с серверами по сети. Все примеры в этой главе используют протокол HTTP, а это означает, что все они ограничены исходной природой протокола HTTP: этот протокол, не имеющий информации о состоянии, состоит из запросов клиента и ответов сервера. Протокол HTTP фактически является узкоспециализированным сетевым протоколом. Более универсальные сетевые взаимодействия через Интернет (или через локальные сети) часто реализуются с использованием долгоживущих соединений и обеспечивают двунаправленный обмен сообщениями через TCP-сокеты. Довольно небезопасно предоставлять клиентскому сценарию на языке JavaScript доступ к низкоуровневым ТСР-сокетам, однако спецификация «WebSocket АРІ» определяет безопасную альтернативу: она позволяет клиентским сценариям создавать двунаправленные соединения с серверами, поддерживающими протокол веб-сокетов. Это существенно упрощает решение некоторых сетевых задач.

Прикладной интерфейс веб-сокетов удивительно прост в использовании. Сначала необходимо создать сокет с помощью конструктора

WebSocket:

var socket = new WebSocket("ws://ws.example.com:1234/resource");

Протокол веб-сокетов

Чтобы использовать веб-сокеты в сценариях на языке JavaScript, достаточно будет освоить клиентский прикладной интерфейс веб-сокетов, описываемый здесь. Не существует эквивалентного серверного прикладного интерфейса для создания серверов с поддержкой веб-сокетов; в этом разделе будет представлен простой пример сервера, основанного на использовании интерпретатора Node (раздел 12.2) и сторонней серверной библиотеки поддержки веб-сокетов. Клиент и сервер взаимодействуют через долгоживущие TCP-сокеты, следуя правилам, определяемым протоколом веб-соке-тов. Мы не будем рассматривать здесь особенности протокола, но следует отметить, что протокол веб-сокетов спроектирован очень аккуратно, благодаря чему веб-серверы могут легко обрабатывать HTTP-соединения и соединения на основе веб-сокетов через один и тот же порт.

Поделиться:
Популярные книги

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Играть... в тебя

Астровитянка

Горькавый Ник
1. Астровитянка
Фантастика:
научная фантастика
9.17
рейтинг книги
Астровитянка

Ричард Львиное Сердце: Поющий король

Сегень Александр Юрьевич
Проза:
историческая проза
5.00
рейтинг книги
Ричард Львиное Сердце: Поющий король

Петр и Алексей (Христос и Антихрист - 3)

Мережковский Дмитрий Сергеевич
Проза:
русская классическая проза
5.00
рейтинг книги
Петр и Алексей (Христос и Антихрист - 3)

Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Томин Валентин Романович
Герои тайной войны
Приключения:
исторические приключения
5.00
рейтинг книги
Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Мисс совершенство

Робертс Нора
3. Инн-Бунсборо
Любовные романы:
современные любовные романы
9.33
рейтинг книги
Мисс совершенство

Джей

Kriu
Фантастика:
фэнтези
5.00
рейтинг книги
Джей

3ds Max 2008

Верстак Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
3ds Max 2008

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.40
рейтинг книги
Князь Андер Арес 3

Гуманитарное знание и вызовы времени

Коллектив авторов
Humanitas
Научно-образовательная:
культурология
5.00
рейтинг книги
Гуманитарное знание и вызовы времени

Рекламная деятельность газет и журналов

Назайкин Александр
Деловая литература:
маркетинг, pr, реклама
5.00
рейтинг книги
Рекламная деятельность газет и журналов