title: Jupyter notebook: No connection to server because websocket connection fails
body: <p>I have just installed Jupyter over pip (Python version is 3.7.2) in Windows 10, started the jupyter server by calling <code>jupyter notebook</code>, created a new notebook with kernel python3 in my web browser but a connection to the kernel is never achieved.</p>
  
  <p>No obvious error in the command line:</p>
  
  <pre><code>C:\Users\xxxx&gt;jupyter notebook
  [I 21:18:21.005 NotebookApp] Serving notebooks from local directory: C:\Users\xxxx
  [I 21:18:21.005 NotebookApp] The Jupyter Notebook is running at:
  [I 21:18:21.006 NotebookApp] http://localhost:8888/?token=5743fcbbc805efa4b36c983a7beb63b95cf922957378d64f
  [I 21:18:21.007 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
  [C 21:18:21.087 NotebookApp]
  
      To access the notebook, open this file in a browser:
          file:///C:/Users/xxxx/AppData/Roaming/jupyter/runtime/nbserver-18416-open.html
      Or copy and paste one of these URLs:
          http://localhost:8888/?token=5743fcbbc805efa4b36c983a7beb63b95cf922957378d64f
  [I 21:18:33.777 NotebookApp] Creating new notebook in
  [I 21:18:35.512 NotebookApp] Kernel started: ab30c1b3-55d2-45e9-9f01-b4bfc077bb01
  [I 21:18:36.883 NotebookApp] Adapting to protocol v5.1 for kernel ab30c1b3-55d2-45e9-9f01-b4bfc077bb01
  c:\users\xxxx\appdata\local\programs\python\python37-32\lib\site-packages\notebook\base\zmqhandlers.py:284: RuntimeWarning: coroutine 'WebSocketHandler.get' was never awaited
    super(AuthenticatedZMQStreamHandler, self).get(*args, **kwargs)
  RuntimeWarning: Enable tracemalloc to get the object allocation traceback
  [W 21:18:37.912 NotebookApp] Replacing stale connection: ab30c1b3-55d2-45e9-9f01-b4bfc077bb01:397de5420f9e4bce82d95967bf5fa1eb
  [W 21:19:14.026 NotebookApp] 404 GET /static/components/preact/preact.min.js.map (::1) 18.98ms referer=None
  [W 21:19:14.040 NotebookApp] 404 GET /static/components/preact-compat/preact-compat.min.js.map (::1) 6.49ms referer=None
  [W 21:19:14.050 NotebookApp] 404 GET /static/components/proptypes/index.js.map (::1) 15.99ms referer=None
  [I 21:20:36.067 NotebookApp] Saving file at /Untitled1.ipynb
  [W 21:22:40.052 NotebookApp] Replacing stale connection: ab30c1b3-55d2-45e9-9f01-b4bfc077bb01:397de5420f9e4bce82d95967bf5fa1eb
  </code></pre>
  
  <p>I have tried all Chrome, Firefox and Microsoft Edge with no success. I even tried through PyCharm.</p>
  
  <p>I then looked at the js console of the browser and seems that the problem is a failure in the websocket connection:</p>
  
  <pre><code>menubar.js:277 actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
  MenuBar.bind_events @ menubar.js:277
  utils.js:60 load_extensions Arguments(1)
  bidi.js:19 Loaded moment locale en
  utils.js:37 Loading extension: jupyter-js-widgets/extension
  session.js:54 Session: kernel_created (003a523b-3d40-41ac-b65e-154db92d5528)
  kernel.js:459 Starting WebSockets: ws://localhost:8888/api/kernels/f8809bf9-988f-4666-b183-e01bed63fa76
  kernel.js:461 WebSocket connection to 'ws://localhost:8888/api/kernels/f8809bf9-988f-4666-b183-e01bed63fa76/channels?session_id=e49c21f065e64e7a89847a0859d689dd' failed: Error during WebSocket handshake: Unexpected response code: 200
  Kernel.start_channels @ kernel.js:461
  kernel.js:103 Kernel: kernel_disconnected (f8809bf9-988f-4666-b183-e01bed63fa76)
  kernel.js:544 WebSocket connection failed:  ws://localhost:8888/api/kernels/f8809bf9-988f-4666-b183-e01bed63fa76 true
  kernel.js:562 Connection lost, reconnecting in 1 seconds.
  kernel.js:103 Kernel: kernel_reconnecting (f8809bf9-988f-4666-b183-e01bed63fa76)
  kernel.js:459 Starting WebSockets: ws://localhost:8888/api/kernels/f8809bf9-988f-4666-b183-e01bed63fa76
  </code></pre>
  
  <p>What could be the reason here?</p>