Java Client Example
import javax.websocket.*;
import java.net.URI;
import com.google.gson.Gson;
import java.util.Map;
@ClientEndpoint
public class ChatClient {
private static final Gson gson = new Gson();
private static Session session;
private static final String URL = "wss://chat-proxy.bitseek.ai/v2/chat?apikey=ETHSH2025&serverType=1";
@OnOpen
public void onOpen(Session s) {
session = s;
System.out.println("✅ Connected");
sendPing();
sendMessage("Hello, please tell me about large language models");
}
@OnMessage
public void onMessage(String message) {
var msg = gson.fromJson(message, Map.class);
if ("message".equals(msg.get("event"))) {
var data = (Map) msg.get("data");
System.out.print(data.get("output"));
if ((Boolean) data.get("stop")) System.out.println("\n--- Stream End ---");
} else if ("error".equals(msg.get("event"))) {
System.err.println("❌ Error: " + ((Map)msg.get("data")).get("error"));
}
}
@OnClose
public void onClose(Session s, CloseReason reason) {
System.out.println("⚠️ Connection closed: " + reason);
attemptReconnect();
}
@OnError
public void onError(Session s, Throwable t) {
System.err.println("❌ WebSocket error: " + t.getMessage());
try { session.close(); } catch (Exception e) {}
}
private void sendPing() {
session.getAsyncRemote().sendText(gson.toJson(Map.of("event","ping")));
}
private void sendMessage(String prompt) {
session.getAsyncRemote().sendText(
gson.toJson(Map.of("event","message","data",Map.of("prompt",prompt)))
);
}
private void attemptReconnect() {
System.out.println("🔄 Attempting reconnect in 3s...");
try { Thread.sleep(3000); } catch (InterruptedException ignored) {}
connect();
}
public static void connect() {
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(ChatClient.class, new URI(URL));
} catch (Exception e) {
System.err.println("❌ Reconnect failed: " + e.getMessage());
try { Thread.sleep(3000); } catch (InterruptedException ignored) {}
connect();
}
}
public static void main(String[] args) { connect(); }
}