Я работаю над проектом и хочу вызвать указанный метод 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 не правильный? Я проверил настройки брандмауэра и все необходимые порты открыты.