def onConnection(websocket): codeRunner = None app.logger.info('NEW WEBSOCKET CONNECTION') while not websocket.closed: gevent.sleep() message = websocket.receive() if (message == None): continue message = json.loads(message) app.logger.info('WEBSOCKET MESSAGE %s', message['type']) if message['type'] == 'run': codeRunner = CodeRunner(message['code'], message['sourceLocs']) app.logger.debug('STARTING CODERUNNER') codeRunner.start() codeRunnerBackend.register(websocket, codeRunner) app.logger.debug('STARTED CODERUNNER') elif message['type'] == 'kill': app.logger.debug('STOPPING CODERUNNER') codeRunnerBackend.stop(websocket) app.logger.debug('STOPPED CODERUNNER') else: raise ValueError('unknown message type {}'.format(message['type'])) app.logger.info('WEBSOCKET CONNECTION CLOSED') codeRunnerBackend.stop(websocket)