getstream laravel with streamjs live notification

时间:2017-05-09 10:44:37

标签: javascript laravel-5.4 getstream-io

我似乎无法使实时通知工作。我已经在我的项目中实现了feed。但我需要在有人关注,喜欢或评论我的帖子时实施LIVE通知。 我还发布了通知页面(用户可以查看以前的通知)。

<script type="text/javascript">
var feed = client.feed('notification', '1', '1999');
function updateNotificationCallback(data) {
    alert(data);
}
feed.subscribe(function callback(data) {
    updateNotificationCallback(data);
});
</script>

我正在使用上面的代码,这是我从streamjs repo docs获得的。我假设上面的代码是检查当前用户是否有新通知的代码?没有错误,但我假设当有人关注我时,将调用updateNotificationCallback。

我错过了什么吗?

暂时,我使用下面的代码通知当前用户他是否有未读通知。notification toolbar

当用户点击通知图标时,它会将他重定向到通知页面,通知页面也会将所有检索到的通知设置为&#34; read&#34;从而重置柜台。

HomeController.php

public function myNewNotifications() {

  $new = 0;

  try {
    $notification_feed = FeedManager::getNotificationFeed(Auth::user()->id)->getActivities()['unread'];
    $new = (int)$notification_feed;
  } catch(ErrorException $e) {
    $new = 0;
  }

  return response()->json([
    'new' => (int)$new
  ]);
}

用于检索未读通知计数的VueJs组件:

<template>
<span class="badge notificationCounter" v-if="notificationsCount >= 1">{{ notificationsCount }}</span>
</template>
<script>
  export default {
    mounted() {
      this.notificationsCount = this.initialCount;
      this.loadData();
      var that = this;
      setInterval(function () {
        that.loadData();
      }, 30000);
    },
    data() {
      return {
        notificationsCount: 0
      }
    },
    props: [
      'initialCount'
    ],
    methods: {
      loadData: function () {
        axios.get('/my/activities/notifications/new').then((response) => {
          this.notificationsCount = response.data.new;
        });
      }
    }
  }
</script>

1 个答案:

答案 0 :(得分:0)

只有在向Feed添加或删除活动时才会触发实时更新。

如果你想发送关注/取消关注的通知,最简单的方法是为它创建一个活动(例如,Tommaso跟随Rayzor)并将其发送到跟随用户的通知提要。

如果您使用Laravel集成,则可以通过将Activity特征添加到Follow模型来实现此目的。