Saya memiliki aplikasi jaringan P2P yang bertindak sebagai server dan klien.

Aplikasi terhubung ke beberapa klien dalam sebuah mesh dan mengirimkan "data" satu sama lain setelah data diproses.

Jika klien mendapat permintaan masuk kemudian membuat permintaan mereka sendiri sebelum menyelesaikan permintaan masuk, tampaknya ada jalan buntu dan tidak ada permintaan yang selesai. Semuanya berfungsi dengan baik kecuali jika pembuatan dikirim yang memprosesnya.

Apakah ini karena saya tidak menggunakan async pada metode server atau ini karena saya tidak boleh mengirim permintaan saat memprosesnya?

Proto

rpc submit_data(DataSubmission) returns (DataSubmissionAck);

Server RPC

public async void Start()
{
    _server = new Server()
    {
       Services = {
          DataService.BindService(new DataService())),
       },
       Ports = { new ServerPort(_IpAddress, _Port, ServerCredentials.Insecure) }
    };

    _server.Start();
}

Metode klien

public void SubmitData(Data data)
{
    ...
    var serverResponse = _serviceClient.submit_data(request);
    ...
}

Metode server

public override Task<DataSubmissionAck> submit_data(DataSubmission request, ServerCallContext context)
{
    DataSubmissionAck clientResponse = new DataSubmissionAck();
    return Task.FromResult(clientResponse);
}
0
user3953989 21 Maret 2019, 05:16

1 menjawab

Jawaban Terbaik

Apa yang tampaknya berhasil adalah membuat panggilan server dan sisi klien semua async.

0
user3953989 23 Maret 2019, 01:25