private listen()

in src/js/server/server.ts [63:159]


    private listen(): void {
        this.server.listen(App.PORT, () => {
            console.log('Running server on port %s', App.PORT);
        });
        let me = this;

        this.io.on('connect', (client: any) => {
            console.log(`Client connected [id=${client.id}]`);
            me.io.emit('setup', `Client connected [id=${client.id}]`);

            client.on('snapshot', (base64Img: string) => {
   
                automl.detect(base64Img, function(results: any){
                    let text = '';
                    if(results && results.payload[0]){
                        let displayName = results.payload[0].displayName;
                        let label = '';

                        switch(displayName.toLowerCase()) {
                            case 'sunflower':
                            case 'sunflowers':
                                label = 'a Sunflower';
                                break;
                            case 'tulip':
                            case 'tulips':
                                label = 'a Tulip';
                                break;
                            case 'rose':
                            case 'roses':
                                label = 'a Rose';
                                break;
                            case 'daisy':
                                label = 'a Daisy';
                                break;
                            case 'cactus':
                                label = 'a Cactus';
                                break;
                            case 'dandelion':
                                label = 'a Dandelion';
                                break;
                            case 'violet':
                                label = 'a Violet';
                                break;
                            case 'aster':
                                label = 'an Aster';
                                break;
                            case 'dahlia':
                                label = 'a Dahlia';
                                break;
                            case 'waterlilly':
                                label = 'a Water Lilly';
                                break;
                            default:
                                label = 'a Flower';
                        }

                        text = `Great, this looks like ${label}`;
                    } else {
                        text = `Auch, I couldn't detect a flower.`;
                    }
                    console.log(results);
                    // TODO change Dialogflow speech based on results
                    client.emit('imgresult', text);
                });
            });

            client.on('meta', (meta: any) => {
                console.log('Connected client on port %s.', App.PORT);
                dialogflow.setupDialogflow(meta);
            });

            client.on('message', (stream: any, herz: number) => {
                console.log(herz);
                console.log(stream);
                // start streaming from client app to dialogflow
                dialogflow.prepareStream(stream, function(audioBuffer: any){
                    // sending to individual socketid (private message)
                    client.emit('broadcast', audioBuffer);
                    dialogflow.detectStreamCall.end();
                });
                // dialogflow.createAudioFile(stream);
            });
            client.on('stop', () => {
                console.log('finalize stream');
                // stop the client stream, and start detecting
                dialogflow.finalizeStream();
                /*dialogflow.detectIntent(function(audioBuffer: any){
                    // sending to individual socketid (private message)
                    client.emit('broadcast', audioBuffer);
                });*/
            });

            client.on('disconnect', () => {
                console.log('Client disconnected');
            });
        });
    }