代码之家  ›  专栏  ›  技术社区  ›  FRZ7

角度-用web api实时模拟的最佳方法

  •  0
  • FRZ7  · 技术社区  · 6 年前

    我向自己解释,我有一个服务,可以给我发送一个对象列表。它的对象由web应用程序的所有用户共享。因此它可以创建删除对象或更改对象的状态。

    为了确保呈现给用户的数据的一致性,我每300毫秒执行一次永久轮询,我发出一个get请求。我比较我的新表以更新状态、删除或添加对象。我不执行直接赋值,否则用户体验会降低,因为html元素将有空值。 但我问在这种情况下什么是最佳实践,我可以应用什么技巧?

    提前谢谢

    2 回复  |  直到 6 年前
        1
  •  3
  •   Fateh Mohamed    6 年前

    如果有事件要从服务器向客户端单向传输,则可以使用http使用SSE(服务器发送的事件),如果希望双向使用web套接字:

    • 在后端实现SSE
    • 在你的角度上,你可以订阅频道并等待数据
    • 您可以为每种类型的事件创建一个可观察的
    • 或者你可以使用ngrx存储,当你收到一个新的事件时,你可以发送一个动作来设置新的状态并自动更新你的视图

    万一 serviceStack ,我有一个角度服务,内部接收器我发送操作并更新商店和我的视图我的视图:

    createSseClient(channels: string[]) {
      this.sseClient = new ServerEventsClient(this.sseServer, channels, {
        handlers: {},
        receivers: {
        MyReciver: {
          SendMagnetNotif //method: (notif: any) => {
            this.store.dispatch(new notificationActions.AddNotification(notif)); // update ngrx store and the view
          }
        }
        ...
     },
      })
    
        2
  •  1
  •   winter    6 年前

    您可以使用Socket.io从angular应用程序建立websocket连接。 在下面的链接中,有一个构建socket.io和基于角度的实时应用程序的详细示例。

    https://auth0.com/blog/real-time-charts-using-angular-d3-and-socket-io/

    对于基于C的后端,可以使用SignalR。

    https://www.asp.net/signalr