12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // Copyright (c) Jupyter Development Team.
- // Distributed under the terms of the Modified BSD License.
- import { KernelManager } from '@jupyterlab/services';
- import { PromiseDelegate } from '@lumino/coreutils';
- import { log } from './log';
- export async function main() {
- // Start a python kernel
- const kernelManager = new KernelManager();
- const kernel = await kernelManager.startNew({ name: 'python' });
- log('Register a comm target in the kernel');
- await kernel.requestExecute({
- code: `
- kernel = get_ipython().kernel
- comm = None
- def comm_opened(comm, msg):
- comm = comm
- kernel.comm_manager.register_target('test', comm_opened)
- `
- }).done;
- log('Create a comm');
- const comm = kernel.createComm('test');
- log('Open the comm');
- await comm.open('initial state').done;
- log('Send a test message');
- await comm.send('test').done;
- log('Close the comm');
- await comm.close('bye').done;
- log('Register a comm target in the browser');
- const done = new PromiseDelegate();
- kernel.registerCommTarget('test2', (comm, commMsg) => {
- if (commMsg.content.target_name !== 'test2') {
- return;
- }
- comm.onMsg = msg => {
- log(msg.content.data);
- };
- comm.onClose = msg => {
- log(msg.content.data);
- done.resolve(undefined);
- };
- });
- log('Create a corresponding comm from the kernel');
- const code = `
- from ipykernel.comm import Comm
- comm = Comm(target_name="test2")
- comm.send(data="comm sent message")
- comm.close(data="closing comm")
- `;
- await kernel.requestExecute({ code: code }).done;
- // Wait for the comm to be closed on our side
- await done.promise;
- }
|