import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
import java.net.URI;
import java.net.URISyntaxException;
@Controller
public class WebSocketController {
@MessageMapping("/your-request-mapping")
@SendTo("/your-response-topic")
public String handleWebSocketRequest(String request) {
String responseData = callThirdPartyModel(request);
return responseData;
}
private String callThirdPartyModel(String request) {
try {
URI uri = new URI("ws://xxxxx"); // 替换为实际的 WebSocket 地址
WebSocketClient client = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
send(request);
}
@Override
public void onMessage(String message) {
// 处理从服务端返回的消息
System.out.println("Received response from third-party model: " + message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
// 连接关闭时的处理
}
@Override
public void onError(Exception ex) {
// 发生错误时的处理
}
};
client.connect();
// 等待连接关闭,这里可以根据实际情况进行处理
while (!client.isClosed()) {
Thread.sleep(1000);
}
return "Response from third-party model";
} catch (URISyntaxException | InterruptedException e) {
e.printStackTrace();
return "Error connecting to third-party model";
}
}
}
09-12