首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“PusherSwift”身份验证没有迅速调用

“PusherSwift”身份验证没有迅速调用
EN

Stack Overflow用户
提问于 2021-07-13 08:58:52
回答 1查看 407关注 0票数 3

我试图使用"AuthRequestBuilderProtocol“来验证Pusher连接。但是它没有被调用,我创建了一个类AuthRequestBuilder,它像下面的代码一样从AuthRequestBuilderProtocol继承

代码语言:javascript
复制
class AuthRequestBuilder: AuthRequestBuilderProtocol {
func requestFor(socketID: String, channelName: String) -> URLRequest? {
    print("HELLO FROM AUTH REQUEST BUILDER!")
    let request = NSMutableURLRequest(url: URL(string: "https://xxxxxxxxxx/broadcasting/auth")!)
    request.httpMethod = "POST"
    request.httpBody = "socket_id=\(socketID)&channel_name=\(channelName)".data(using: String.Encoding.utf8)
    print("socketID: \(socketID), ChannelName: \(channelName)")
    request.addValue("Bearer " + UserDefaults.standard.retreiveUserAccessToken(), forHTTPHeaderField: "Authorization")
    return request as URLRequest
}

}

在主控制器中,我定义了以下变量

代码语言:javascript
复制
var client: Pusher?
var channel: PusherChannel?
var options: PusherClientOptions?
var appKey: String = "xxxx"

在viewDidLoad中,我定义了以下内容:

代码语言:javascript
复制
    override func viewDidLoad() {
    super.viewDidLoad()
    options = PusherClientOptions(
        authMethod: AuthMethod.authRequestBuilder(authRequestBuilder: AuthRequestBuilder()),
        autoReconnect: true, host: .host("xxxxxxxxxx"),
        port: 6001,
        path: "/",
        activityTimeout: 10
    )
    client = Pusher(withAppKey: appKey, options: options!)
    client?.connection.delegate = self
    channel = client?.subscribeToPresenceChannel(channelName: "presence-Room.\(idOfRooms ?? 0)")
    client?.connect()
    print(channel?.name ?? "")
    print(channel?.subscribed ?? "")
    print(channel?.type ?? "")
    print(channel?.unsentEvents ?? "")
    
    // bind to all events globally
    let _ = client?.bind(eventCallback: { (event: PusherEvent) in
        var message = "Received event: '\(event.eventName)'"
        
        if let channel = event.channelName {
            message += " on channel '\(channel)'"
        }
        if let userId = event.userId {
            message += " from user '\(userId)'"
        }
        if let data = event.data {
            message += " with data '\(data)'"
        }
        
        print(message)
    })}

当我调用AuthRequestBuilder时viewDidLoad没有调用的问题,所以我有一个问题要订阅存在通道,知道如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 19:34:48

以上所提供的所有方法都是正确的!问题是后端服务器版本与最新版本的PusherSwift不兼容,因此我将级别从10.0.0降至8.0.0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68359414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档