示例#1
0
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)