У меня есть сервер 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 Можеткто-нибудь посоветует, почему я не могу подключиться к хабу?