Skip to content

Commit 443d27c

Browse files
committed
Start connection in background thread
1 parent 670ffbe commit 443d27c

File tree

4 files changed

+47
-24
lines changed

4 files changed

+47
-24
lines changed

app/src/main/java/com/smartarmenia/websocketclient/MainActivity.kt

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class MainActivity : AppCompatActivity(), HubConnectionListener, HubEventListene
2626
}
2727

2828
override fun onError(exception: Exception) {
29-
29+
runOnUiThread { Toast.makeText(this@MainActivity, exception.message, Toast.LENGTH_SHORT).show() }
3030
}
3131

3232
private val connection: HubConnection = WebSocketHubConnection("http://192.168.0.104:5002/signalr/hubs/auth")
@@ -36,22 +36,14 @@ class MainActivity : AppCompatActivity(), HubConnectionListener, HubEventListene
3636
setContentView(R.layout.activity_main)
3737

3838
btnHello.setOnClickListener {
39-
connection.invoke("Send", "Hello")
40-
}
41-
42-
Thread(Runnable {
4339
try {
44-
connection.connect("Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Ijc5NzhjMjI3LWViMGItNGMwOS1iYWEyLTEwYmE0MjI4YWE4OSIsImNlcnRzZXJpYWxudW1iZXIiOiJtYWNfYWRkcmVzc19vZl9waG9uZSIsInNlY3VyaXR5U3RhbXAiOiJlMTAxOWNiYy1jMjM2LTQ0ZTEtYjdjYy0zNjMxYTYxYzMxYmIiLCJuYmYiOjE1MDYyODQ4NzMsImV4cCI6NDY2MTk1ODQ3MywiaWF0IjoxNTA2Mjg0ODczLCJpc3MiOiJCbGVuZCIsImF1ZCI6IkJsZW5kIn0.QUh241IB7g3axLcfmKR2899Kt1xrTInwT6BBszf6aP4")
45-
} catch (ex: Exception) {
46-
runOnUiThread { Toast.makeText(this@MainActivity, ex.message, Toast.LENGTH_SHORT).show() }
40+
connection.invoke("Send", "Hello")
41+
} catch (e: Exception) {
42+
Toast.makeText(this@MainActivity, e.message, Toast.LENGTH_SHORT).show()
4743
}
48-
connection.addListener(this@MainActivity)
49-
connection.subscribeToEvent("Send", this)
50-
}).start()
44+
}
5145

52-
Thread(Runnable {
53-
connect()
54-
}).start()
46+
connect()
5547
}
5648

5749
override fun onDestroy() {

dotnetcoresignalrclientjava/bintray.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apply plugin: 'com.jfrog.bintray'
22

3-
version = '1.0.6'
3+
version = '1.07'
44

55
task sourcesJar(type: Jar) {
66
from android.sourceSets.main.java.srcDirs

dotnetcoresignalrclientjava/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
defaultConfig {
99
minSdkVersion 16
1010
targetSdkVersion 26
11-
versionCode 7
12-
versionName "1.06"
11+
versionCode 8
12+
versionName "1.07"
1313
}
1414

1515
buildTypes {

dotnetcoresignalrclientjava/src/main/java/com/smartarmenia/dotnetcoresignalrclientjava/WebSocketHubConnection.java

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,16 @@ public WebSocketHubConnection(String hubUrl) {
4141
}
4242

4343
@Override
44-
public void connect(String authHeader) {
44+
public void connect(final String authHeader) {
45+
Runnable runnable = new Runnable() {
46+
public void run() {
47+
getConnectionId(authHeader);
48+
}
49+
};
50+
new Thread(runnable).start();
51+
}
52+
53+
private void getConnectionId(String authHeader) {
4554
Log.i(TAG, "Requesting connection id...");
4655
if (!(parsedUri.getScheme().equals("http") || parsedUri.getScheme().equals("https")))
4756
throw new RuntimeException("URL must start with http or https");
@@ -126,18 +135,28 @@ public void onClose(int code, String reason, boolean remote) {
126135
@Override
127136
public void onError(Exception ex) {
128137
Log.i(TAG, "Error " + ex.getMessage());
129-
for (HubConnectionListener listener : listeners) {
130-
listener.onError(ex);
131-
}
138+
error(ex);
132139
}
133140
};
134141
Log.i(TAG, "Connecting...");
135142
client.connect();
136143
}
137144

145+
private void error(Exception ex) {
146+
for (HubConnectionListener listener : listeners) {
147+
listener.onError(ex);
148+
}
149+
}
150+
138151
@Override
139152
public void disconnect() {
140-
client.close();
153+
Runnable runnable = new Runnable() {
154+
public void run() {
155+
if (client != null && !(client.isClosed() || client.isClosing()))
156+
client.close();
157+
}
158+
};
159+
new Thread(runnable).start();
141160
}
142161

143162
@Override
@@ -175,13 +194,25 @@ public void unSubscribeFromEvent(String eventName, HubEventListener eventListene
175194

176195
@Override
177196
public void invoke(String event, Object... parameters) {
178-
Map<String, Object> map = new HashMap<>();
197+
if (client == null || !client.isOpen()) {
198+
throw new RuntimeException("Not connected");
199+
}
200+
final Map<String, Object> map = new HashMap<>();
179201
map.put("type", 1);
180202
map.put("invocationId", UUID.randomUUID());
181203
map.put("target", event);
182204
map.put("arguments", parameters);
183205
map.put("nonblocking", false);
184-
client.send(gson.toJson(map) + SPECIAL_SYMBOL);
206+
Runnable runnable = new Runnable() {
207+
public void run() {
208+
try {
209+
client.send(gson.toJson(map) + SPECIAL_SYMBOL);
210+
} catch (Exception e) {
211+
error(e);
212+
}
213+
}
214+
};
215+
new Thread(runnable).start();
185216
}
186217

187218
private static class InputStreamConverter {

0 commit comments

Comments
 (0)