mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
Implemeting tiktok ws handling
This commit is contained in:
@@ -72,12 +72,7 @@
|
||||
<version>1.18.22</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>API</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
@@ -93,18 +88,6 @@
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>2.0.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>2.0.7</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
@@ -119,6 +102,12 @@
|
||||
<version>RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>API</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -1,40 +0,0 @@
|
||||
package io.github.jwdeveloper.tiktok.websocket;
|
||||
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.java_websocket.handshake.ServerHandshake;
|
||||
|
||||
import java.net.URI;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Map;
|
||||
|
||||
public class Client2 extends WebSocketClient {
|
||||
public Client2(URI serverUri, Map<String, String> httpHeaders) {
|
||||
super(serverUri,httpHeaders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen(ServerHandshake serverHandshake) {
|
||||
|
||||
System.out.println("Open");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(String s) {
|
||||
System.out.println("MESSAGE");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(ByteBuffer bytes) {
|
||||
System.out.println("MESSAGE binary");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(int i, String s, boolean b) {
|
||||
System.out.println("Close");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception e) {
|
||||
System.out.println("Error");
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.github.jwdeveloper.tiktok.websocket;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import io.github.jwdeveloper.generated.WebcastMessageEvent;
|
||||
import io.github.jwdeveloper.generated.WebcastResponse;
|
||||
import io.github.jwdeveloper.generated.WebcastWebsocketAck;
|
||||
@@ -9,6 +10,7 @@ import io.github.jwdeveloper.tiktok.TikTokLiveException;
|
||||
import java.net.http.WebSocket;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionStage;
|
||||
@@ -21,7 +23,7 @@ public class TikTokWebSocketListener implements java.net.http.WebSocket.Listener
|
||||
|
||||
@Override
|
||||
public CompletionStage<?> onBinary(WebSocket webSocket, ByteBuffer data, boolean last) {
|
||||
System.out.println("Received onBinary: " + data + " " + last);
|
||||
System.out.println("Received onBinary: " + data + " " + last);
|
||||
parts.add(data);
|
||||
webSocket.request(1);
|
||||
if (last) {
|
||||
@@ -50,15 +52,17 @@ public class TikTokWebSocketListener implements java.net.http.WebSocket.Listener
|
||||
|
||||
private void handleBinary(WebSocket webSocket, ByteBuffer buffer) {
|
||||
try {
|
||||
WebcastWebsocketMessage websocketMessage = WebcastWebsocketMessage.parseFrom(buffer);
|
||||
// buffer= Base64.getEncoder().encode(buffer);
|
||||
ByteString byteString = ByteString.copyFrom(buffer);
|
||||
WebcastWebsocketMessage websocketMessage = WebcastWebsocketMessage.parseFrom(byteString);
|
||||
|
||||
if(websocketMessage.getBinary().isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// System.out.println(websocketMessage.getBinary());
|
||||
try {
|
||||
var response = WebcastResponse.parseFrom(websocketMessage.getBinary());
|
||||
|
||||
var serverInfo = WebcastWebsocketAck
|
||||
.newBuilder()
|
||||
.setType("ack")
|
||||
@@ -69,13 +73,14 @@ public class TikTokWebSocketListener implements java.net.http.WebSocket.Listener
|
||||
System.out.println("Works");
|
||||
// handleResponse(response);
|
||||
} catch (Exception e) {
|
||||
// throw new TikTokLiveException("Unabel to read WebcastResponse");
|
||||
System.out.println("Unable to read WebcastResponse");
|
||||
throw new TikTokLiveException("Unabel to read WebcastResponse",e);
|
||||
// System.out.println("Unable to read WebcastResponse");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
System.out.println("Unable to read WebcastWebsocketMessage");
|
||||
//throw new TikTokLiveException("Unabel to read WebcastWebsocketMessage");
|
||||
// System.out.println("Unable to read WebcastWebsocketMessage");
|
||||
e.printStackTrace();
|
||||
throw new TikTokLiveException("Unabel to read WebcastWebsocketMessage",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,11 +85,7 @@ public class TikTokWebsocketClient {
|
||||
var map = new HashMap<String, String>();
|
||||
map.put("Cookie", cookie);
|
||||
|
||||
|
||||
// System.in.read();
|
||||
//var cluent2 = new Client2(URI.create(url), map);
|
||||
var builder = HttpClient.newHttpClient().newWebSocketBuilder();
|
||||
var ws = builder
|
||||
var ws = factory.openSocket()
|
||||
.subprotocols("echo-protocol")
|
||||
.connectTimeout(Duration.ofSeconds(15))
|
||||
.header("Cookie", cookie)
|
||||
@@ -101,7 +97,7 @@ public class TikTokWebsocketClient {
|
||||
byte[] message = new byte[]{58, 2, 104, 98};
|
||||
ByteBuffer buffer = ByteBuffer.wrap(message);
|
||||
while (buffer.hasRemaining()) {
|
||||
ws.sendPing(buffer).get();
|
||||
ws.sendPing(buffer);
|
||||
}
|
||||
buffer.clear();
|
||||
Thread.sleep(10);
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.io.IOException;
|
||||
|
||||
public class TikTokLiveTest
|
||||
{
|
||||
public static String TEST_USER_SUBJECT = "erwin_winki";
|
||||
public static String TEST_USER_SUBJECT = "live_interactive_";
|
||||
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package io.github.jwdeveloper.tiktok.http;
|
||||
|
||||
import com.google.gson.JsonParser;
|
||||
import io.github.jwdeveloper.tiktok.live.models.gift.TikTokGift;
|
||||
import org.java_websocket.WebSocket;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
Reference in New Issue
Block a user