如何以角度4 /角度2连续接收传入的消息

时间:2018-02-08 08:53:46

标签: angular quickblox

我正在尝试创建一个聊天应用程序,我使用Quickblox Api来发送和接收消息。但我没有办法正确接收传入消息。

现在,我使用setInterval在5秒后检索邮件,如下所示。

this.setIntervalVariable = setInterval(() => {
    this.quickService.retreiveAllMessageByDialogId(this.currentDialogId).subscribe(
        res => {
            this.messageHistory = res.items;
        }
    )
}, 5000)

在服务中:

retreiveAllMessageByDialogId(Dialogid) {
    var headers = new Headers();
    headers.append('QB-Token', localStorage.getItem('QBToken'));
    return this._http.get("https://api.quickblox.com/chat/Message.json?chat_dialog_id=" + Dialogid, {headers: headers}).map(
        (res: Response) => res.json());
}

但它的作用是它在5秒后调用Api,这会不必要地增加网络请求。我想知道有没有其他方法可以做到这一点。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

我也使用这样的东西来频繁地获取我的通知。请试试这个

 ngOnInit() {
    this.checkforNewUpdates();
  }   

 checkforNewUpdates() {
        Observable.interval(1000 * 60).takeUntil(this.onDestroy$).subscribe(x => {
          this.fetchData(url).subscribe(
            (data) => {
              console.log(data);
            })
        });
      }



    fetchData(url) {
        return this.http.get(url, {
          headers: // set header values
        }).map(
          (res) => res.json()
          )
      }

答案 1 :(得分:0)

WebSocket实现可以满足此要求。

请完成this参考并尝试一下,它可能对您有所帮助。

谢谢。