cloudflare worker 输出chatgpt api流式eventsource推送
先利用cloudfare的worker实现一个eventsource服务端推送
addEventListener('fetch', (event) => {
event.respondWith(handle_request(event.request));
});
async function handle_request(request) {
if (request.method === 'GET' && request.url.endsWith('/test')) {
return new Response(`
<!DOCTYPE html>
<html>
<head>
<title>Chat with GPT-3</title>
</head>
<body>
<div id="output"></div>
<script>
const output = document.getElementById('output');
const source = new EventSource('/stream');
source.onmessage = (event) => {
output.innerHTML += '<p>' + event.data + '</p>';
};
</script>
</body>
</html>
`, {
headers: { 'Content-Type': 'text/html' },
});
}
if (request.method === 'GET' && request.url.endsWith('/stream')) {
const { readable, writable } = new TransformStream();
// 将数据逐步写入可写流中
const writer = writable.getWriter();
setInterval(() => {
writer.write(new TextEncoder().encode('Hello, world!\n'));
}, 1000);
// 返回可读流作为响应主体
return new Response(readable, {
headers: {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
},
});
}
return ...点击查看剩余70%
网友评论