<div class="gmail_quote">On Sat, Sep 22, 2012 at 1:54 PM, T J <span dir="ltr">&lt;<a href="mailto:tjhnson@gmail.com" target="_blank">tjhnson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><div class="gmail_quote">On Thu, Sep 20, 2012 at 2:42 PM, MinRK <span dir="ltr">&lt;<a href="mailto:benjaminrk@gmail.com" target="_blank">benjaminrk@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br><br><div class="gmail_quote"><div><div>On Wed, Sep 19, 2012 at 9:32 AM, T J <span dir="ltr">&lt;<a href="mailto:tjhnson@gmail.com" target="_blank">tjhnson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div class="gmail_quote"><div>On Wed, Sep 19, 2012 at 4:49 AM, Thomas Kluyver <span dir="ltr">&lt;<a href="mailto:takowl@gmail.com" target="_blank">takowl@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div>On 19 September 2012 08:49, T J &lt;<a href="mailto:tjhnson@gmail.com" target="_blank">tjhnson@gmail.com</a>&gt; wrote:<br>
&gt; the last response from the OP mentions that each open notebook uses 3 random<br>
&gt; ports (which differ from the port that the IPython notebook server listens<br>
&gt; on).  Is this true?  This seems like it would be an issue for me.  Can<br>
&gt; someone explain, in general, what IPython notebook is doing with these other<br>
&gt; ports?<br>
<br>
</div>One of them is the main request/response channel (e.g. &#39;execute this<br>
code&#39;, &#39;get completions for foo&#39;), one is a publication channel,<br>
primarily for things printed to stdout, and I think the third is to<br>
get input for stdin (although the notebook doesn&#39;t currently implement<br>
that).<br>
<br>
There&#39;s a pull request open that experiments with merging the three<br>
websocket channels into one - that might help you:<br>
<a href="https://github.com/ipython/ipython/pull/2321" target="_blank">https://github.com/ipython/ipython/pull/2321</a><br>
<br><br></blockquote><div><br></div></div><div>Look promising.  This pull requests seems to make it easier to use the notebook behind a proxy, but its unclear to me if this allows me to restrict which the ports the notebooks will try to use.</div>



</div></blockquote><div><br></div></div></div><div>People get confused by the fact that the notebook communicates with *kernels* via random localhost ports (even there, it connects, it does not listen).  All communications with browsers happen over a single port, and the notebook server only ever listens on that single user-configurable port.</div>

<div>

<div></div></div></div></blockquote></div><br><div><br></div></div></div><div>Thanks for the clarification. Very helpful.</div>
</blockquote></div><br><div>I&#39;ve given this another try now (still behind the Webfaction proxy), using pull request #2321, but I&#39;m still getting &quot;404: Not Found&quot;.  In order to use SockJS, must I do any configuration or should it have been automatic?  Is there a way that I can make IPython provide more detailed log information so that I can pinpoint why I&#39;m getting the 404s.  Here is what I see at the command line:</div>
<div><br></div><div>    WARNING:root:404 GET / (127.0.0.1) 0.64ms</div><div><br></div><div>My config file is:</div><div><br></div><div><div><div>c = get_config()</div><div>c.NotebookApp.ip = &#39;*&#39;</div><div>c.NotebookApp.base_project_url = &#39;/notebook/&#39;</div>
</div><div>c.NotebookApp.base_kernel_url = &#39;/notebook/&#39;</div><div>c.NotebookApp.port = 26000</div><div>c.NotebookApp.open_browser = False</div></div><div>c.NotebookApp.webapp_settings = {&#39;static_url_prefix&#39;:&#39;/notebook/static/&#39;}</div>
<div>c.IPKernelApp.pylab = &#39;inline&#39;</div><div>c.IPKernelApp.pylab_import_all = False</div><div><br></div>