Asp. Net Core SignalR не может подключиться с Android Studio Emulator Client - проблема согласования - PullRequest
0 голосов
/ 14 марта 2020

Я работаю над проектом и хочу вызвать указанный метод c концентратор из React и прослушать его в Android приложении.

Мой. net концентратор:

public class StreamHub : Hub
    {
        public async Task StreamTester(string data)
        {
            await Clients.All.SendAsync("RecieveStream", data);
        }
    }

Я вызываю StreamTester метод из React, и он отлично работает (я протестировал .on ответ в React), и я хочу слушать RecieveStream в моем Android app.

Я пытаюсь подключиться к концентратору с помощью. net клиента SignalR, и он продолжает возвращать состояние ОТКЛЮЧЕНО, когда я регистрирую его. Переговоры с концентратором на сервере

На рисунке мы видим, что он на самом деле пытается договориться, но когда я регистрирую состояние hubConnection, он возвращает меня ОТКЛЮЧЕНО. Журнал состояния соединения концентратора

Это мой. java код:


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        createHubConnection();

        hubConnection.on("RecieveStream", (data) -> {
            ((TextView)findViewById(R.id.streamData)).setText(data);
        }, String.class);

    }

    private void createHubConnection() {
        hubConnection = HubConnectionBuilder.create("http://10.0.2.2:5000/streamHub").build();

        if (hubConnection.getConnectionState() == HubConnectionState.DISCONNECTED) {
            hubConnection.start();
        }
    }

    public void startStream(View v) {

        Log.d("connection", hubConnection.getConnectionState().toString());
    }

startStream - просто прослушиватель событий для кнопки для проверки соединения.

Моя сборка .gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.myfirstapp"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0-${System.env.VERSION_SHA}"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.microsoft.signalr:signalr:1.0.0'
    implementation 'org.slf4j:slf4j-jdk14:1.7.25'
}

Я делаю что-то не так, может быть, мой gradle не правильный? Я проверил настройки брандмауэра и все необходимые порты открыты.

...