概述

饭否的 Streaming API 借鉴了 Twitter 的设计,使用方式和一般的 REST API 类似,都需要经过 OAuth 验证。但是 Streaming API 需要保持一个长连接,通过返回不同类型的消息来传递数据。

参考:

消息类型

User 对象定义参考:https://github.com/FanfouAPI/FanFouAPIDoc/wiki/users.show

Status 对象定义参考:https://github.com/FanfouAPI/FanFouAPIDoc/wiki/statuses.show

发布状态

目前除提及了当前用户的状态外,其他用户发布的状态不会收到消息

{
    "source": {
        // 包含状态发布者个人信息的 User 对象
    },
    "target": null,
    "object": {
        // 发送的状态的 Status 对象
    },
    "event": "message.create",
    "created_at": "Sat, 11 Mar 2016 11:48:48"
}

删除状态

目前其他用户删除状态不会收到消息

{
    "source": {
        // 包含状态发布者个人信息的 User 对象
    },
    "target": null,
    "object": {
        // 被删除的状态的 Status 对象
    },
    "event": "message.delete",
    "created_at": "Sat, 11 Mar 2016 11:49:44"
}

被提及

{
    "source": {
        // 原状态发送用户的 User 对象
    },
    "target": {
        // 状态提及的用户的 User 对象
    },
    "object": {
        // 提及了当前用户的状态的 Status 对象
    },
    "event": "message.create",
    "created_at": "Sat, 11 Mar 2016 11:52:29"
}

成功关注好友

{
    "source": {
        // 发起关注操作的用户的 User 对象
    },
    "target": {
        // 被关注的用户的 User 对象
    },
    "object": null,
    "event": "friends.create",
    "created_at": "Sat, 11 Mar 2016 11:56:06"
}

成功取消关注好友

当前登录用户被取消关注时不会收到消息

{
    "source": {
        // 发起取消关注操作的用户的 User 对象
    },
    "target": {
        // 被取消关注的用户的 User 对象
    },
    "object": null,
    "event": "friends.delete",
    "created_at": "Sat, 11 Mar 2016 11:57:04"
}

状态被收藏

{
    "source": {
        // 发起收藏操作的用户的 User 对象
    },
    "target": {
        // 状态被收藏的用户的 User 对象
    },
    "object": {
        // 被收藏的状态的 Status 对象
    },
    "event": "fav.create",
    "created_at": "Sat, 11 Mar 2016 12:29:50"
}

状态被取消收藏

{
    "source": {
        // 发起取消收藏操作的用户的 User 对象
    },
    "target": {
        // 状态被取消收藏的用户的 User 对象
    },
    "object": {
        // 被取消收藏的状态的 Status 对象
    },
    "event": "fav.delete",
    "created_at": "Sat, 11 Mar 2016 12:29:50"
}

发起关注请求

{
    "source": {
        // 发起关注请求的用户的 User 对象
    },
    "target": {
        // 被请求关注的用户的 User 对象
    },
    "object": null,
    "event": "friends.request",
    "created_at": "Sat, 11 Mar 2016 12:33:31"
}

更新用户个人资料

目前仅限当前登录用户更新个人资料时会收到消息

{
    "source": {
        // 更新了个人资料的用户的 User 对象
    },
    "target": null,
    "object": null,
    "event": "user.updateprofile",
    "created_at": "Sat, 11 Mar 2016 12:53:37"
}