【发布时间】:2020-06-16 23:10:43
【问题描述】:
我正在将新的 SSE 端点用于实时视频上的实时 cmets。我的问题是如何在 IOS 上实现这一点以及我应该使用什么库
我尝试使用 IOS 的事件源 https://github.com/inaka/EventSource
但即使我尝试使用 OnMessage 和 addOnEventsource,它似乎也不起作用。
这是我收听现场 cmets 的代码
var live_commentURL = URL.init(string:"https://streaming-graph.facebook.com/\(fbLiveStreamId!)/live_comments?access_token=\(accessToken ?? "")&comment_rate=one_per_two_seconds&fields=from{name,id},message")
let queryItems = [NSURLQueryItem(name: "access_token", value: accessToken!), NSURLQueryItem(name: "comment_rate", value: "one_hundred_per_second"),NSURLQueryItem(name: "fields", value: "from{name,id},message")]
let urlComps = NSURLComponents(string: "https://streaming-graph.facebook.com/\(fbLiveStreamId!)/live_comments")!
// var headders:[String:String] = [:]
// headders["access_token"] = accessToken!
// headders["comment_rate"] = "one_hundred_per_second"
// headders["fields"] = "from{name,id},message"
var eventSource = EventSource.init(url:urlComps.url!)
eventSource.connect()
eventSource.onOpen {
print("Successfully Connected to server")
}
eventSource.addEventListener("user-connected") {(id, event, data) in
print("id:", id)
print("event:" , event)
print("data: ", data)
}
eventSource.onMessage { (id, event, data) in
print("id:", id)
print("event:" , event)
print("data: ", data)
}
print(eventSource.events())
eventSource.onComplete { (code, isErro, error) in
print(code)
}
我也尝试在头文件中发送访问令牌和其他字段,但没有成功。
我尝试了两种方法
方法一 将 accesstoken、comment_rate 和字段作为标题发送,但我认为这不是正确的方法。
方法二
因为它们都是查询参数,所以我使用了 NSURLComponents。
【问题讨论】:
-
嗨!当你在收听cmets时,除了你之外的人在你的直播中cmets,你能得到评论的人的名字和id吗?我可以得到 cmets,但无法确定发表评论的人。谢谢。
-
@JorgeNachtigall 如果您希望对直播发表评论的用户需要让他们允许您的 Facebook 应用程序的权限,因此如果您创建一个群组并邀请人们加入该群组是有意义的所有用户都可以接受您的应用权限。
-
@MahiTejGvp 您的示例代码正在运行,请检查您的身份验证令牌
标签: swift server-sent-events facebook-comments facebook-live-api