<span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; ">On Fri, Nov 20, 2009 at 1:10 PM, Greg Wilkins <span dir="ltr">&lt;<a href="mailto:gregw@mortbay.com">gregw@mortbay.com</a>&gt;</span> wrote:</span><br>

<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">Fumitoshi Ukai (鵜飼文敏) wrote:<br>
&gt; On Thu, Nov 19, 2009 at 1:00 PM, Greg Wilkins &lt;<a href="mailto:gregw@webtide.com">gregw@webtide.com</a><br>
&gt;<br>
</div><div class="im">&gt;      var ws = new WebSocket(&quot;ws://<a href="http://mysite.com" target="_blank">mysite.com</a><br>
</div>&gt;     &lt;<a href="http://mysite.com" target="_blank">http://mysite.com</a>&gt;&quot;,&quot;myprotocol&quot;);<br>
&gt; ...<br>
<div class="im">&gt;     So if the next line in the script is<br>
&gt;<br>
&gt;      ws.onopen=myopenfunc;<br>
&gt;<br>
&gt;     there is a race between if the onopen function will<br>
&gt;     be assigned and if the background connection has been established?<br>
&gt;<br>
&gt;<br>
&gt; I believe open event  is just queued at the moment, and it will be fired<br>
&gt; later when javascript becomes idle.<br>
<br>
</div>Unfortunately this does not appear to be the implementation in chrome<br>
at least.  If you step through with a debugger, then the close happens<br>
before my ws.onclose function is assigned, as thus it is never called.<br></blockquote><div><br></div><div>Really?</div><div>I couldn&#39;t reproduce the case.  <span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; ">I put long for loop between new WebSocket and ws.onopen =, and/or ws.onclose, it will fire onopen and onclose as expected <span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; ">after chrome showing the page is unresponsive.</span></span></div>

<div><span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; "><span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; "><br>

</span></span></div><div><span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; "><span class="Apple-style-span" style="-webkit-text-stroke: none; -webkit-transform-origin-z: 0px; -webkit-transform-style: 50%; "><div>

var ws = new WebSocket(&quot;ws://localhost:8880/websocket/tests/simple&quot;);</div><div>debug(&quot;wait&quot;);</div><div>for (var j = 0; j &lt; 50000; j++) {</div><div> for (var i = 0 ; i &lt; 100000; i++) {</div><div>

  ;</div><div> }</div><div>}</div><div>debug(&quot;wait done&quot;);</div><div><br></div><div>ws.onopen = function()</div><div>{</div><div>    debug(&quot;Connected.&quot;);</div><div>};</div><div><br></div><div>ws.onmessage = function(messageEvent)</div>

<div>{</div><div>    debug(&quot;Received: &#39;&quot; + messageEvent.data + &quot;&#39;&quot;);</div><div>};</div><div><br></div><div>ws.onclose = function()</div><div>{</div><div>    debug(&quot;Closed.&quot;);</div><div>

    endTest();</div><div>};</div><div><br></div></span></span></div><div><span class="Apple-style-span" style="-webkit-transition: 0px; ">-- </span></div><div><span class="Apple-style-span" style="-webkit-transition: 0px; ">ukai</span></div>

<div><span class="Apple-style-span" style="-webkit-transition: 0px; "><br></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Even if it was implemented as you say, I&#39;m wondering if the API should<br>
be less dependent on the single threaded nature of current javascript<br>
implementations.<br>
<br>
cheers<br>
</blockquote></div><br>