-1

クライアントがファイルをアップロードし、サーバー関数を使用してファイルを解析できるようにする Go を使用してサーバーを作成しています。現在、私は 2 つの別々の要求を使用しています。1) 最初の要求は、ユーザーがアップロードしたファイルを送信します。2) 2 番目の要求は、サーバーがファイルを解析するために必要なパラメーターをサーバーに送信します。

ただし、プログラムの性質上、複数のユーザーが同時にサーバーを使用しようとすると、同時実行性の問題が発生する可能性があることに気付きました。それに対する私の解決策は、ミューテックスロックを使用することでした。ただし、ファイルを受信し、応答を送信してからパラメーターを受信して​​います。ミューテックスがロックされていると、Go が応答を返すことができないようです。ファイルとパラメータの両方を 1 つの HTTP リクエストで送信することで、この問題を解決することを考えています。それを行う方法はありますか?ありがとう

サンプルコード (関連部分のみ):

クライアントからファイルを送信するコード:

handleUpload() {
        const data = new FormData()

        for(var x = 0; x < this.state.selectedFile.length; x++) {
            data.append('myFile', this.state.selectedFile[x])
        }

        var self = this;
        let url = *the appropriate url*
        axios.post(url, data, {})
        .then(res => {
            //other logic
            self.handleParser();
        })
}

handleParser() のコード:

    handleNessusParser(){

        let parserParameter = {
        SourcePath : location,
        ProjectName : this.state.projectName
        }

        // fetch the the response from the server
        let self = this;
        let url = *url*
        fetch(url, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(parserParameter),

        }).then( (response) => {

        if(response.status === 200) {

           //success logic
        }


        }).catch (function (error) {

        console.log("error: ", error);

        });     
    }
4

1 に答える 1