Соединение закрыто.
Свойства
<b>readonly unsigned long bufferedAmount</b>
Количество символов сообщения, переданного методу
<b>send(),</b>
которые еще не были отправлены фактически. Это свойство можно использовать при передаче больших объемов данных, чтобы гарантировать, что программа не будет отправлять сообщения быстрее, чем они могут быть переданы по сети.
<b>readonly string protocol</b>
Если конструктору
<b>WebSocket()</b>
был передан массив подпротоколов, это свойство будет хранить один из них, выбранный сервером. Обратите внимание, что в первый момент после создания объекта
<b>WebSocket</b>
соединение еще не установлено и выбор сервера неизвестен, поэтому первоначально это свойство содержит пустую строку. Если конструктору был передан список протоколов, значение этого свойства изменится в соответствии с выбором сервера, когда будет сгенерировано событие «open».
<b>readonly unsigned short readyState</b>
Текущее состояние соединения. Значением этого свойства может быть одна из констант, перечисленных выше.
<b>readonly string url</b>
Это свойство хранит URL-адрес, который был передан конструктору
<b>WebSocket().</b>
Методы
<b>void close()</b>
Если соединение еще не закрыто или для него еще не была запущена процедура закрытия, этот метод инициирует процесс его закрытия и присваивает свойству
<b>readyState</b>
значение CLOSING. События «message» могут продолжать возбуждаться даже после вызова метода
<b>close(),</b>
пока свойство
<b>readyState</b>
не получит значение CLOSED и не будет возбуждено событие «close».
<b>void send(string data)</b>
Отправляет данные
<b>data</b>
на сервер, подключенный к другому концу соединения. Этот метод возбуждает исключение, когда вызывается до того, как будет сгенерировано событие «open», т.е. пока свойство
<b>readyState</b>
имеет значение CONNECTING. Протокол веб-сокетов поддерживает обмен двоичными данными, но на момент написания этих строк текущая версия прикладного интерфейса веб-сокетов поддерживала только текстовые сообщения.
Обработчики событий
Сетевые взаимодействия по своей природе являются асинхронными, и, подобно объекту
<b>XMLHttpRequest</b>
, объект
<b>WebSocket</b>
также опирается на использование событий. Он определяет четыре свойства регистрации обработчиков событий, а также реализует интерфейс
<b>EventTarget</b>
, благодаря чему обработчики событий можно также регистрировать с помощью методов интерфейса
<b>EventTarget</b>
. Все события, описываемые ниже, возбуждаются в объекте
<b>WebSocket</b>
. Ни одно из них не всплывает, и ни для одного из них не предусмотрено действий по умолчанию, которые можно было бы отменить. Отметьте, однако, что им передаются различные объекты событий.
<b>onclose</b>
Событие «close» генерируется после закрытия соединения (и свойство
<b>readyState</b>
получит значение CLOSED). Обработчику события передается объект
<b>CloseEvent</b>
, который определяет, было соединение закрыто без ошибок или нет.
<b>onerror</b>
Событие «error» генерируется, когда возникает сетевая ошибка или ошибка протокола веб-сокетов. Обработчику события передается обычный объект
<b>Event</b>
<b>onmessage</b>
Когда сервер отправляет данные через веб-сокет, объект
<b>WebSocket</b>
возбуждает событие «message» и передает обработчику объект
<b>MessageEvent</b>
, свойство
<b>data</b>
которого ссылается на принятое сообщение.
<b>onopen</b>
Конструктор
<b>WebSocket()</b>
возвращает управление еще до того, как будет установлено соединение с адресом url. Когда процедура установления соединения завершится и объект
<b>WebSocket</b>
будет готов к отправке и приему данных, будет возбуждено событие «open». Обработчику события передается обычный объект
<b>Event</b>
.
Window
окно, вкладка или фрейм веб-броузера (EventTarget)
Объект
<b>Window</b>
представляет окно, вкладку или фрейм в броузере. Он подробно описан в главе 14. В клиентском JavaScript-коде объект
<b>Window</b>
выступает в качестве «глобального» объекта, и все выражения вычисляются в контексте текущего объекта
<b>Window</b>
. Это значит, что для обращения к текущему окну не требуется использовать специальный синтаксис и свойства этого объекта можно использовать, как если бы они были глобальными переменными. Например, вместо
<b>window.document</b>
можно писать
<b>Document</b>
. Аналогично можно вызывать методы текущего объекта окна, как если бы они были функциями, например
<b>alert()</b>
вместо
<b>window.alert().</b>
Некоторые свойства и методы этого объекта фактически позволяют определять и изменять некоторые параметры окна броузера. Другие включены в этот объект просто потому, что он является глобальным объектом. Помимо перечисленных здесь свойств и методов объект
<b>Window</b>
реализует все глобальные функции, определяемые базовым языком JavaScript. Подробности см. в справочной статье Global в третьей части книги. Веб-броузеры возбуждают в окнах множество различных событий. Это означает, что объект
<b>Window</b>
определяет массу обработчиков событий и что объекты
<b>Window</b>
реализуют методы интерфейса
<b>EventTarget</b>
.
В объекте
<b>Window</b>
имеются свойства
<b>window</b>
и
<b>self</b>
, которые ссылаются на само окно. Они позволяют явно задать ссылку на окно.