簡體   English   中英

如何在Swift項目中使用SocketRocket?

[英]How can I use SocketRocket in a Swift Project?

我是iOS編程的新手,仍然在學習Swift。 我試圖在Swift項目中使用SocketRocket庫https://github.com/facebook/SocketRocket ,以便通過Web套接字連接到使用MAMP創建的Web服務器。 我知道有Starscream https://github.com/daltoniam/Starscream准備在Swift中使用,但它給出了錯誤,並且無法按我在此處的說明進行操作: 如何解決“ websocket已斷開連接:無效的HTTP升級”錯誤使用紅蜘蛛

Rocket Socket是用Objective-C編寫的,我不理解它,試圖查看文檔,但是我不知道如何將其轉換為Swift並在我的項目中實現其方法。 已經使用Cocoapods安裝了SocketRocket。 因此它不需要標題橋接文件,因為我使用了“ use_frameworks!”。 在podfile中。

ViewController.swift文件:

導入UIKit導入SocketRocket

class ViewController:UIViewController,SRWebSocketDelegate {//錯誤:類型'ViewController'不符合協議'SRWebSocketDelegate'是否要添加協議存根?

var urlRequest = NSURLRequest(URL: NSURL(string: "http://host.com")) //EROOR: Cannot convert value of type 'NSURL?' to expected argument type 'URL' Insert ' as! URL'

var socket = SRWebSocket(URLRequest: urlRequest)

//let socket = SRWebSocket(url: "ws://localhost:8888")

override func viewDidLoad() {
    super.viewDidLoad()

    socket.open()
    socket.send()
    socket.close()



}

func webSocketDidOpen(webSocket: SRWebSocket!) {
    print("socket opened");
}

func webSocket(webSocket: SRWebSocket!, didCloseWithCode code: Int, reason: String!, wasClean: Bool) {
    print("code: \(code) reason:\(reason) ");
}

func webSocket(webSocket: SRWebSocket!, didFailWithError error: NSError!) {
    print("error: \(error)");
}

func webSocket(webSocket: SRWebSocket!, didReceiveMessage message: AnyObject!) {
    print("received message")
}

}

這是我嘗試編寫的代碼...但是有錯誤,如注釋中所示。 希望你們能幫助我。 謝謝!!! :)

嗨,克里斯蒂安,您可以使用也使用Starscream的“ pod'Socket.IO-Client-Swift'”。

有關文檔,您也可以在這里查看。 Socket.IO-客戶端-Swift

    private var socket: SocketIOClient?
    private var manager: SocketManager?


    private func initializeSocket() {

    self.manager = SocketManager(socketURL:  URL(string: self.baseUrlForSocket)!, config: [.log(true), .forceNew(true), .reconnectAttempts(10), .reconnectWait(6000), .connectParams(["authorization": authKey]), .forceWebsockets(true), .compress])

    self.socket = manager?.defaultSocket
 }

這里baseUrlForSocket是您提供的套接字URL,而authKey是授權值。

如有任何疑問,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM