gpt4 book ai didi

ios - 如何在 Swift 项目中使用 SocketRocket?

转载 作者:行者123 更新时间:2023-11-29 05:27:42 25 4
gpt4 key购买 nike

我是 iOS 编程新手,仍在学习 Swift。我正在尝试使用 SocketRocket 库 https://github.com/facebook/SocketRocket在 Swift 项目中,以便通过 Web 套接字连接到使用 MAMP 创建的 Web 服务器。我知道有红蜘蛛https://github.com/daltoniam/Starscream准备在 Swift 中使用,但它会出现错误,我无法让它工作,正如我在这里解释的那样:How to fix "websocket is disconnected: Invalid HTTP upgrade" error using Starscream

SocketRocket 是用 Objective-C 编写的,我不明白它,试图查看文档,但我不知道如何将它翻译成 Swift 和在我的项目中实现它的方法。已经使用 Cocoapods 安装了 SocketRocket。所以它不需要 header 桥接文件,因为我使用了“use_frameworks!”在 podfile 中。

ViewController.swift 文件:

import UIKit
import SocketRocket

class ViewController: UIViewController, SRWebSocketDelegate { //ERROR: Type 'ViewController' does not conform to protocol 'SRWebSocketDelegate' Do you want to add protocol stubs?

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")
}
}

这是我尝试编写的代码...但是存在错误,如注释中所示。希望你们能帮助我。谢谢!!! :)

最佳答案

嗨 Cristian,您也可以使用使用 Starscream 的“pod 'Socket.IO-Client-Swift'”。

有关文档,您也可以查看此处。 Socket.IO-Client-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是你提供的socket url,authKey是授权值。

如有任何疑问,请告诉我。

关于ios - 如何在 Swift 项目中使用 SocketRocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com