Skip to content

Commit 75f6368

Browse files
authored
Merge pull request #125 from jwdeveloper/develop-1.10.3
Change websocket connection logic!
2 parents 50d6d6e + b9eb0eb commit 75f6368

File tree

4 files changed

+25
-28
lines changed

4 files changed

+25
-28
lines changed

API/src/main/java/io/github/jwdeveloper/tiktok/websocket/LiveSocketClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@
2828
public interface LiveSocketClient {
2929
void start(LiveConnectionData.Response webcastResponse, LiveClient tikTokLiveClient);
3030
void stop();
31-
}
31+
boolean isConnected();
32+
}

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,11 @@ public void tryConnect() {
154154
}
155155

156156
public void disconnect() {
157-
if (roomInfo.hasConnectionState(ConnectionState.DISCONNECTED)) {
158-
return;
159-
}
160-
setState(ConnectionState.DISCONNECTED);
161-
webSocketClient.stop();
162-
}
157+
if (webSocketClient.isConnected())
158+
webSocketClient.stop();
159+
if (!roomInfo.hasConnectionState(ConnectionState.DISCONNECTED))
160+
setState(ConnectionState.DISCONNECTED);
161+
}
163162

164163
private void setState(ConnectionState connectionState) {
165164
logger.info("TikTokLive client state: " + connectionState.name());
@@ -174,17 +173,16 @@ public void publishEvent(TikTokEvent event) {
174173
public void publishMessage(String webcastMessageName, String payloadBase64) {
175174
this.publishMessage(webcastMessageName, Base64.getDecoder().decode(payloadBase64));
176175
}
176+
177177
@Override
178178
public void publishMessage(String webcastMessageName, byte[] payload) {
179-
180179
var builder = ProtoMessageFetchResult.BaseProtoMessage.newBuilder();
181180
builder.setMethod(webcastMessageName);
182181
builder.setPayload(ByteString.copyFrom(payload));
183182
var message = builder.build();
184183
messageHandler.handleSingleMessage(this, message);
185184
}
186185

187-
188186
public void connectAsync(Consumer<LiveClient> onConnection) {
189187
connectAsync().thenAccept(onConnection);
190188
}

Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
import io.github.jwdeveloper.tiktok.data.requests.LiveConnectionData;
2727
import io.github.jwdeveloper.tiktok.data.settings.*;
2828
import io.github.jwdeveloper.tiktok.exceptions.*;
29-
import io.github.jwdeveloper.tiktok.live.LiveClient;
30-
import io.github.jwdeveloper.tiktok.live.LiveEventsHandler;
31-
import io.github.jwdeveloper.tiktok.live.LiveMessagesHandler;
29+
import io.github.jwdeveloper.tiktok.live.*;
3230
import org.java_websocket.client.WebSocketClient;
3331

3432
import javax.net.ssl.*;
@@ -42,7 +40,6 @@ public class TikTokWebSocketClient implements LiveSocketClient {
4240
private final LiveEventsHandler tikTokEventHandler;
4341
private final WebSocketHeartbeatTask heartbeatTask;
4442
private WebSocketClient webSocketClient;
45-
private boolean isConnected;
4643

4744
public TikTokWebSocketClient(
4845
LiveClientSettings clientSettings,
@@ -54,14 +51,12 @@ public TikTokWebSocketClient(
5451
this.messageHandler = messageHandler;
5552
this.tikTokEventHandler = tikTokEventHandler;
5653
this.heartbeatTask = heartbeatTask;
57-
isConnected = false;
5854
}
5955

6056
@Override
6157
public void start(LiveConnectionData.Response connectionData, LiveClient liveClient) {
62-
if (isConnected) {
63-
stop();
64-
}
58+
if (isConnected())
59+
stop();
6560

6661
messageHandler.handle(liveClient, connectionData.getWebcastResponse());
6762

@@ -85,9 +80,7 @@ private void connectDefault() {
8580
try {
8681
webSocketClient.connect();
8782
heartbeatTask.run(webSocketClient, clientSettings.getPingInterval());
88-
isConnected = true;
8983
} catch (Exception e) {
90-
isConnected = false;
9184
throw new TikTokLiveException("Failed to connect to the websocket", e);
9285
}
9386
}
@@ -117,13 +110,12 @@ public X509Certificate[] getAcceptedIssuers() {
117110
ProxyData proxyData = proxySettings.next();
118111
if (tryProxyConnection(proxySettings, proxyData)) {
119112
heartbeatTask.run(webSocketClient, clientSettings.getPingInterval());
120-
isConnected = true;
121113
break;
122114
}
123115
if (proxySettings.isAutoDiscard())
124116
proxySettings.remove();
125117
}
126-
if (!isConnected)
118+
if (!isConnected())
127119
throw new TikTokLiveException("Failed to connect to the websocket");
128120
}
129121

@@ -138,11 +130,14 @@ public boolean tryProxyConnection(ProxyClientSettings proxySettings, ProxyData p
138130
}
139131

140132
public void stop() {
141-
if (isConnected && webSocketClient != null && webSocketClient.isOpen()) {
142-
webSocketClient.closeConnection(0, "");
133+
if (isConnected()) {
134+
webSocketClient.close();
143135
heartbeatTask.stop();
144136
}
145137
webSocketClient = null;
146-
isConnected = false;
138+
}
139+
140+
public boolean isConnected() {
141+
return webSocketClient != null && webSocketClient.isOpen();
147142
}
148143
}

Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketOfflineClient.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,12 @@ public void start(LiveConnectionData.Response webcastResponse, LiveClient tikTok
4545

4646
@Override
4747
public void stop() {
48-
if (liveClient == null) {
49-
return;
50-
}
51-
handler.publish(liveClient, new TikTokDisconnectedEvent("Stopping"));
48+
if (liveClient != null)
49+
handler.publish(liveClient, new TikTokDisconnectedEvent("Stopping"));
50+
}
51+
52+
@Override
53+
public boolean isConnected() {
54+
return false;
5255
}
5356
}

0 commit comments

Comments
 (0)