javascript websockets - control initial connection/when does onOpen get bound

Два связанных вопроса, которые могут быть связаны с моим незнанием того, как/если браузеры предварительно разбирают javascript:

var ws = new WebSocket("ws://ws.my.url.com");
ws.onOpen = function() { ... };

Похоже, что нет способа напрямую контролировать инициализацию WebSocket, кроме как обернуть ее в обратный вызов, поэтому я предполагаю, что соединение создается, как только код javascript загружается и попадает в конструктор?

Когда свойство onOpen присоединяется к ws? Существует ли возможность возникновения состояния гонки (если по какой-то причине между определением сокета и определением onOpen находится какой-то код?), так что onOpen неразрешимо связан до/после установления соединения (я знаю, что можно опционально проверить ws.readyState). В дополнение к этому, блокирует ли WebSocket handshake?

Я понимаю, что все это на данный момент черновик, возможно, зависит от реализации, и я могу упустить что-то ослепительно очевидное, но я не смог увидеть ничего особенно важного в моем поиске в интернете/просмотре проекта спецификации w3c, так что любая помощь в моем понимании websockets/javascript's inner workings будет очень признательна!

28
задан dbeacham 5 December 2011 в 22:56
поделиться