两个相关的问题可能更多地源于我对浏览器预解析javascript的方式缺乏了解:
var ws = new WebSocket("ws://ws.my.url.com");
ws.onOpen = function() { ... };
Run Code Online (Sandbox Code Playgroud)
似乎没有办法直接控制a的初始化WebSocket,除了将它包装在回调中,所以我假设一旦javascript代码被加载并创建到构造函数就会创建连接?
该onOpen物业何时附加ws?是否存在竞争条件的可能性(如果由于某种原因,您在套接字的定义和onOpen?的定义之间有一些代码),那么onOpen在建立连接之前/之后是不可判定地绑定的(我知道您可以选择检查ws.readyState) .补充一点,是WebSocket握手阻塞吗?
我意识到这一切都是目前的草案,可能依赖于实现,我可能已经错过了一些令人眼花缭乱的显而易见的事情,但是在我的互联网搜索/浏览草案w3c规范时我看不出任何特别相关的信息,所以对我的理解有任何帮助websockets/javascript的内部工作非常感谢!