parent
c618d930e0
commit
91edaf6d38
@ -0,0 +1,56 @@
|
|||||||
|
package com.dsideal.base.AI.Controller;
|
||||||
|
|
||||||
|
import com.jfinal.core.Controller;
|
||||||
|
import com.jfinal.kit.SseEmitter;
|
||||||
|
|
||||||
|
public class SSEController extends Controller {
|
||||||
|
/**
|
||||||
|
* 主线程里
|
||||||
|
* 测试本地发送文本打字机
|
||||||
|
*/
|
||||||
|
public void sse1() throws InterruptedException {
|
||||||
|
String msg = "111 222 333 444 555 666 777";
|
||||||
|
//创建sse
|
||||||
|
SseEmitter sseEmitter = new SseEmitter(getResponse());
|
||||||
|
//主线程里拿到数据推送消息
|
||||||
|
String[] datas = msg.split("");
|
||||||
|
for (String data : datas) {
|
||||||
|
//推送
|
||||||
|
sseEmitter.sendMessage(data);
|
||||||
|
Thread.sleep(50);
|
||||||
|
}
|
||||||
|
//sse完成
|
||||||
|
sseEmitter.complete();
|
||||||
|
//结束response
|
||||||
|
renderNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步子线程模拟
|
||||||
|
* 测试本地发送文本打字机
|
||||||
|
* http://10.10.21.20:9200/dsBase/ai/sse2
|
||||||
|
*/
|
||||||
|
public void sse2() {
|
||||||
|
//创建sse
|
||||||
|
final SseEmitter sseEmitter = new SseEmitter(getResponse());
|
||||||
|
String msg = "111 222 333 444 555 666 777";
|
||||||
|
//模拟chatgptapi 异步调用返回
|
||||||
|
new Thread(() -> {
|
||||||
|
String[] datas = msg.split("");
|
||||||
|
for (String data : datas) {
|
||||||
|
//推送 异步子线程里推送数据给客户端
|
||||||
|
sseEmitter.sendMessage(data);
|
||||||
|
try {
|
||||||
|
Thread.sleep(50);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//完成sse 告知主线程已经完成
|
||||||
|
sseEmitter.complete();
|
||||||
|
}).start();
|
||||||
|
//锁住等待子线程推送完成
|
||||||
|
sseEmitter.waiting(100);
|
||||||
|
renderNull();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue