| 646 | # 用 Python 实现一个 SSE 服务器 |
| 647 | class SSEHandler(BaseHTTPRequestHandler): |
| 648 | def do_GET(self): |
| 649 | self.send_response(200) |
| 650 | self.send_header("Content-Type", "text/event-stream") |
| 651 | self.send_header("Cache-Control", "no-cache") |
| 652 | self.end_headers() |
| 653 | |
| 654 | # 模拟 Claude API 的流式响应 |
| 655 | events = [ |
| 656 | 'event: message_start\ndata: {"type":"message_start"}\n\n', |
| 657 | 'event: content_block_delta\ndata: {"type":"content_block_delta","delta":{"text":"Hello"}}\n\n', |
| 658 | 'event: content_block_delta\ndata: {"type":"content_block_delta","delta":{"text":" World"}}\n\n', |
| 659 | 'event: content_block_delta\ndata: {"type":"content_block_delta","delta":{"text":"!"}}\n\n', |
| 660 | 'event: message_stop\ndata: {"type":"message_stop"}\n\n', |
| 661 | ] |
| 662 | |
| 663 | for event in events: |
| 664 | self.wfile.write(event.encode()) |
| 665 | self.wfile.flush() |
| 666 | time.sleep(0.1) # 模拟逐字生成 |
| 667 | |
| 668 | def log_message(self, format, *args): |
| 669 | pass |