如何在 Swift 项目中使用 SocketRocket?



我是 iOS 编程新手,还在学习 Swift。我正在尝试在 Swift 项目中使用 SocketRocket 库 https://github.com/facebook/SocketRocket,以便通过 Web 套接字连接到我的 Web 服务器,该服务器使用 MAMP 创建。 我知道有 Starscream https://github.com/daltoniam/Starscream 可以在 Swift 中使用,但它给出了错误,我无法让它像我在这里解释的那样工作: 如何使用Starscream修复" websocket已断开连接:无效的HTTP升级"错误

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

视图控制器.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")
}
}

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

嗨,克里斯蒂安,你也可以使用 "pod 'Socket.IO-Client-Swift' "也使用 Starscream。

有关文档,您也可以查看此处。 Socket.IO-客户端-斯威夫特

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 是授权值。

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

相关内容

  • 没有找到相关文章

最新更新