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
相关产品推荐
相关产品推荐

