现代移动浏览器对SSE 的支持较为完善:Chrome for Android(2012年起,版本18+)、Safari on iOS(2011年起,版本5+)均已原生支持EventSource API。Android WebView(2013年起,版本4.4+)和iOS WKWebView中也可正常使用SSE。唯一的显著例外是Internet Explorer(全版本均不支持),但在移动端IE已基本绝迹,实际影响可忽略。
微信小程序、百度智能小程序等平台的环境中不提供原生的EventSource对象,无法直接通过标准API使用SSE。解决方案包括:使用Taro.request等分块传输能力模拟SSE协议并增量解析响应体;或通过XMLHttpRequest的onprogress事件累积响应文本并自行解析SSE格式;也有开源库如sse-kit提供了跨端统一的SSE客户端封装,可在小程序环境中使用。
React Native 的fetchAPI在iOS上不支持流式Response(response.body为null),无法直接解析SSE流。社区中通常使用react-native-sse等第三方库,或通过XMLHttpRequest的onprogress事件自行实现SSE解析器。uni-app环境中可使用其提供的统一网络请求API,配合平台判断分别实现H5端的原生EventSource 和小程序端的模拟实现。
移动设备经常在不同网络之间切换(Wi-Fi与蜂窝网络互切),或遇到信号弱导致TCP连接中断的情况。SSE 的自动重连机制在这种情况下表现良好:连接断开后浏览器会自动重连并携带Last-Event-ID,用户通常无需手动干预。在移动端使用SSE时,建议服务器设置合理的retry:值(如10000毫秒),避免在网络短暂抖动时过于频繁地重连。