microsoft / vscode-jupyter-hub

Jupyter Hub Support in VS Code
https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter-hub
MIT License
8 stars 6 forks source link

Support for Named Servers #39

Closed mcitoler closed 1 day ago

mcitoler commented 9 months ago

As far as I can tell, the extension can only connect to the default server. Is there any way it could support named servers as well?

DonJayamanne commented 9 months ago

Thanks for the suggestion I believe that will be possible, provided the named server is already running

jabbera commented 9 months ago

I need this for the extension to be useful for my org

mcitoler commented 6 months ago

@DonJayamanne do we have any updates on this?

Yefee commented 5 months ago

This is a must have feature for the plugin.

germandb commented 5 months ago

I was struggling with this also, and get an Invalid Jupyterhub URL specified that doesn't tell me much. Hope this feature came quickly because in my org we only use named servers.

Yefee commented 2 months ago

Any progress?

HCharlie commented 2 months ago

this is a really good feature, is there any update or roadmap on this?

DonJayamanne commented 1 day ago

Just and FYI, i've started working on this.

DonJayamanne commented 1 day ago

@mcitoler Please can you give this a go and try to install the latest pre-release version and see if it works as expected.

Yefee commented 21 hours ago

I tested the pre-release version and found that it can start kernels on the named server. However, the code runs indefinitely without producing any results.

See log below. Server name: jupyter-heavy2

visual Studio Code (1.91.1, ssh-remote, desktop)
Jupyter Extension Version: 2024.6.0.
Python Extension Version: 2024.10.0.
Pylance Extension Version: 2024.7.1.
Platform: linux (x64).
Workspace folder ~/work/projects/SST-bias, Home = /glade/u/home/che43
18:13:01.550 [info] Starting Kernel () for '~/work/projects/SST-bias/test_dataspell.ipynb' (disableUI=true)
18:13:02.108 [info] Started session for kernel connectToLiveRemoteKernel:300984b0-58bd-4960-8f00-00813fd649f6
18:13:02.143 [info] Kernel successfully started
18:13:02.313 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.314 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.314 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.315 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.315 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.316 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.316 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.317 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.322 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.323 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.324 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.325 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.325 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.347 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.371 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.371 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.484 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:02.485 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:03.316 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:03.318 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:03.318 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:03.319 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:03.320 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:13:08.011 [info] Disposing kernel 300984b0-58bd-4960-8f00-00813fd649f6 for notebook ~/work/projects/SST-bias/test_dataspell.ipynb due to selection of another kernel or closing of the notebook
18:13:08.011 [info] Dispose Kernel '~/work/projects/SST-bias/test_dataspell.ipynb' associated with '~/work/projects/SST-bias/test_dataspell.ipynb'
18:13:08.016 [error] Failed to determine version of IPyWidgets Error: Canceled future for execute_request message before replies were done
    at Qr.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:22379)
    at /glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:41058
    at Map.forEach (<anonymous>)
    at n._clearKernelState (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:41044)
    at n.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:34512)
    at _i.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:56437)
    at WD.shutdownImplementation (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:593)
    at WD.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:282:32608)
    at Ss (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:115:867)
    at e (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:31789)
    at YD.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:32034)
    at n.onDidChangeSelectedNotebooks (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:304:89538)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.$acceptNotebookAssociation (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:156:232513)
    at S (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:5986)
    at S.Q (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:5752)
    at S.M (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:4778)
    at S.L (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:3605)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:2297)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:14502)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:179:8639)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:14502)
    at f.z (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:17638)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:16019)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at m.acceptChunk (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:12248)
    at /glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:11518
    at Socket.v (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:176:14266)
    at Socket.emit (node:events:518:28)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
    at Socket.Readable.push (node:internal/streams/readable:390:5)
    at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
18:13:08.019 [warn] Failed to determine IPyKernel Version undefined
18:13:08.019 [error] Failed to execute internal startup code Error: Canceled future for execute_request message before replies were done
    at Qr.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:22379)
    at /glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:41058
    at Map.forEach (<anonymous>)
    at n._clearKernelState (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:41044)
    at n.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:34512)
    at _i.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/node_modules/@jupyterlab/services.js:11:56437)
    at WD.shutdownImplementation (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:593)
    at WD.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:282:32608)
    at Ss (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:115:867)
    at e (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:31789)
    at YD.dispose (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:285:32034)
    at n.onDidChangeSelectedNotebooks (/glade/u/home/~/.vscode-server/extensions/ms-toolsai.jupyter-2024.6.0-linux-x64/dist/extension.node.js:304:89538)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.$acceptNotebookAssociation (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:156:232513)
    at S (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:5986)
    at S.Q (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:5752)
    at S.M (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:4778)
    at S.L (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:3605)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:153:2297)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:14502)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:179:8639)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at o.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:14502)
    at f.z (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:17638)
    at n.value (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:16019)
    at r.B (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:737)
    at r.fire (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:83:954)
    at m.acceptChunk (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:12248)
    at /glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:108:11518
    at Socket.v (/glade/u/home/~/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/out/vs/workbench/api/node/extensionHostProcess.js:176:14266)
    at Socket.emit (node:events:518:28)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
    at Socket.Readable.push (node:internal/streams/readable:390:5)
    at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
18:14:07.474 [info] Starting Kernel (Python [conda env:miami2]) for '~/work/projects/SST-bias/test_dataspell.ipynb' (disableUI=false)
18:14:08.114 [info] https://jupyterhub.hpc.ucar.edu/stable/user/~/jupyter-heavy2/: Kernel started: 98ebaccf-769b-455d-a24a-07a2c3f14ca5
18:14:15.489 [info] Started session for kernel startUsingRemoteKernelSpec:2db53f9bb291a00ef3962d651c3b339b1e1e48750d1c5decfd886e42ec13bd8e..conda-env-miami2-py./python./.-m#nb_conda_kernels.runner#/glade/u/apps/jupyterhub/jh-23.11#/glade/work/~/conda-envs/miami2#/glade/work/~/conda-envs/miami2/bin/python#-m#ipykernel_launcher
18:14:15.606 [info] Kernel successfully started
18:14:15.761 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:15.761 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:15.763 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:15.763 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:16.171 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:16.172 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:16.175 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:16.176 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.599 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.600 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.601 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.609 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.624 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.627 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:32.628 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.903 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.904 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.905 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.906 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.949 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
18:14:40.950 [error] Exception while handling messages: TypeError: First argument to DataView constructor must be an ArrayBuffer
DonJayamanne commented 17 hours ago

@Yefee I was hoping no one would run into that https://github.com/microsoft/vscode-jupyter-hub/issues/64 I too ran into this, and not sure how to configure JupyterLab to use the old version of the Protocol

Try overriding this value to ensure its an empty string to use the old protocol

--ServerApp.kernel_ws_protocol=<Unicode>
    DEPRECATED. Use ZMQChannelsWebsocketConnection.kernel_ws_protocol

BaseKernelWebsocketConnection.kernel_ws_protocolUnicode
Default: None

Preferred kernel message protocol over websocket to use (default: None). If an empty string is passed, select the legacy protocol. If None, the selected protocol will depend on what the front-end supports (usually the most recent protocol supported by the back-end and the front-end).
Yefee commented 5 hours ago

@Yefee I was hoping no one would run into that #64 I too ran into this, and not sure how to configure JupyterLab to use the old version of the Protocol

Try overriding this value to ensure its an empty string to use the old protocol

--ServerApp.kernel_ws_protocol=<Unicode>
    DEPRECATED. Use ZMQChannelsWebsocketConnection.kernel_ws_protocol

BaseKernelWebsocketConnection.kernel_ws_protocolUnicode
Default: None

Preferred kernel message protocol over websocket to use (default: None). If an empty string is passed, select the legacy protocol. If None, the selected protocol will depend on what the front-end supports (usually the most recent protocol supported by the back-end and the front-end).

@DonJayamanne Could you elaborate more on the solution? I set both BaseKernelWebsocketConnection.kernel_ws_protocolUnicode and ServerApp.kernel_ws_protocol to empty string. The problem persists.