Не удается подключиться к Asp.Net Core SignalR из клиента эмулятора Android Studio - PullRequest
0 голосов
/ 06 мая 2019

У меня есть сервер SignalR, работающий на

http://localhost:50926/testhub

. Я могу подключиться к концентратору на той же машине с помощью клиента .net signalR, и он работает, как и ожидалось.Я не могу подключиться к нему на Android-клиенте, работающем в Android Studio.Я понимаю, что вы не можете подключиться к локальному хосту из эмулятора, поэтому я настроил прокси-сервер ng rock и прокси-сервер подключается к локальному хосту из почтальона, но я не могу подключиться из эмулятора.Я понимаю, что клиент Android может использовать только веб-сокеты, поэтому я настроил концентратор для использования веб-сокетов, например:

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseWebSockets();
        app.UseSignalR((configure) =>
        {
            var desiredTransports =
                HttpTransportType.WebSockets;

            configure.MapHub<TestHub>("/testhub", (options) =>
            {
                options.Transports = desiredTransports;
            });
        });
        app.Run(async (context) =>
           {
               await context.Response.WriteAsync("Hello World!");
           });
    }

Вот мой код клиента Android:

public class MainActivity extends AppCompatActivity {

HubConnection hubConnection;

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

    hubConnection = HubConnectionBuilder.create("http://c03e07e9.ngrok.io/testhub").build();
    hubConnection.start();
    if (hubConnection.getConnectionState()== HubConnectionState.CONNECTED){
        hubConnection.send("ReceiveMessage","hello from android");
    }


}

} И градл:

 android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.ct.sigrtest2"
    minSdkVersion 28
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    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'
    implementation 'com.microsoft.signalr:signalr:1.0.0'
    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'

} Клиент Android не выдает никаких ошибок и не будет подключаться к ngrok Можеткто-нибудь посоветует, почему я не могу подключиться к хабу?

1 Ответ

0 голосов
/ 06 мая 2019

Ngrok, похоже, не поддерживает websockets: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...