Skip to content

WebSocket 全双工通信与SSE轻量化实现及Nginx代理配置

🕒 Published at:

Nginx代理配置

处理Nginx代理WebSocket和SSE请求超时连接问题

nginx
# eventSource
location /es {
    proxy_pass  https://xxx;
    proxy_set_header Connection '';
    proxy_http_version 1.1;
    chunked_transfer_encoding off;
    proxy_buffering off;
    proxy_cache off;
}

参考

使用fetch-event-source库

前端SSE只能发送GET请求,一般浏览器对链接长度有限制,无法完全发送。为解决这个问题,可以使用 @microsoft/fetch-event-source库来进行流式输出。

javascript
import { fetchEventSource } from '@microsoft/fetch-event-source';

const url = "xxx";

fetchEventSource(url, {
  onopen(response) {
    console.log('SSE连接已打开', response);
  },
  onmessage(event) {
    console.log('接收到消息:', event.data);
  },
  onclose() {
    console.log('SSE连接已关闭');
  },
  onerror(err) {
    console.error('SSE连接发生错误', err);
  },
});