You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 17集成Socket.IO后HTTP请求不触发且返回旧数据问题

Angular 17聊天应用Socket.IO集成后HTTP请求不触发问题

我正在开发基于Angular 17的聊天应用,刚集成了Socket.IO。页面加载时,通过以下HTTP请求获取消息可正常工作:

getMessages(conversationId: string): Observable<any> {
    const headers = { 'Authorization': 'Bearer ' + this._localStorage.get('accessToken') };
    return this.http.get(this.baseUrl + '/messages/' + conversationId + '?skip=0&take=40', { headers });
}

通过Socket.IO接收消息后,我会将新消息添加到消息数组中。但之后调用获取会话全部消息的方法时,HTTP请求并未触发,直接返回旧数据(不包含Socket接收的消息),只有刷新页面后请求才会正常触发并返回全部消息。

获取消息的方法如下(切换会话时都会调用):

getMessagess(conversationId: string) {
    this.subscriptions['getMessages'] = this._appService.getMessages(conversationId)
    .subscribe({
      next: (res) => {        
        this.messages = res;
      },
      error: (err) => {
        this._utilityService.handleError(err, 'getMessages');
      }
    });
}

此问题仅在集成Socket.IO后出现,不连接Socket时请求每次都能正常触发。当前应用原本启用了SSR。

我已尝试以下方案但均无效:

  • 添加禁用缓存的请求头:
    'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',
    'Pragma': 'no-cache'
    
  • 在angular.json的开发和生产配置中关闭SSR及预渲染:
    "ssr": false,
    "prerender": false
    
  • 在Chrome开发者工具中禁用缓存

内容的提问来源于stack exchange,提问作者buda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:20:07