Swift无法为类型为'url:URL的参数列表调用'WebSocket'类型的初始化程序

问题描述

我有下面的代码可以快速进行网络套接字通信,但是在构建代码时却出错了。

代码

import Foundation
import Starscream

class StarscreamWebSocket: WebSocketProvider {

    var delegate: WebSocketProviderDelegate?
    private let socket: WebSocket
    
    init(url: URL) {
        self.socket = WebSocket(url: url)
        self.socket.delegate = self
    }
    
    func connect() {
        self.socket.connect()
    }
    
    func send(data: Data) {
        self.socket.write(data: data)
    }
}

错误

Cannot invoke initializer for type 'WebSocket' with an argument list of type '(url: URL)'

可能是问题所在。

解决方法

此框架的WebSocket类没有带有单个URL参数的初始化程序。它有两个初始化程序:

public init(request: URLRequest,engine: Engine)
public convenience init(request: URLRequest,certPinner: CertificatePinning? = FoundationSecurity(),compressionHandler: CompressionHandler? = nil,useCustomEngine: Bool = true)

您似乎想使用第二个。只需使用您的URLRequest

创建一个URL
let request = URLRequest(url: url)
self.socket = WebSocket(request: request )