cloudflare worker 输出chatgpt api流式eventsource推送

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%

{{collectdata}}

网友评论