【发布时间】:2018-03-27 10:05:34
【问题描述】:
我正在尝试在用户加入聊天室时发出事件。所以我有 2 节课:
- SocketIOManager
- 视图控制器
SocketIOManager代码:
import SocketIO
class SocketIOManager: NSObject {
static let manager = SocketManager(socketURL: URL(string: "https://myurl.com:443")!, config: [.log(true), .compress])
static let socket = manager.defaultSocket
class func connectSocket(){
self.manager.config = SocketIOClientConfiguration(
arrayLiteral: .connectParams(["token": myToken), .secure(true)
)
socket.connect()
}
class func connectToChatRoom(chat: String, user: String){
let jsonDic = ["chat": chat,
"user": user]
print("CHEKING SOCKET CONNECTION 1-ST TIME - \(socket.status)") // This gives me - connecting
socket.emit("join", jsonData)
print("CHEKING SOCKET CONNECTION 2-ND TIME - \(socket.status)") // This gives me - connecting
}
class func isSocketConnected() -> Bool{
if socket.status == .connected {
return true
}
return false
}
}
在我的 ViewController 中我会这样做 - 首先我连接套接字。然后我尝试发射。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
SocketIOManager.connectSocket()
SocketIOManager.connectToChatRoom(chat: chatID, user: myID)
print("\(SocketIOManager.isSocketConnected())") //This gives me "false"
}
}
毕竟我在来自 Socket.IO 的日志中收到错误:尝试在未连接时发出连接。
CHEKING SOCKET CONNECTION 1-ST TIME - connecting
2018-03-27 12:26:04.895072+0300 MyApp[3760:1940922] LOG SocketIOClient{/}: Handling event: error with data: ["Tried emitting join when not connected"]
CHEKING SOCKET CONNECTION 2-ND TIME - connecting
false
我做的发射对吗?如何使用 Socket.IO 执行发射?
【问题讨论】:
-
在调用发射之前,套接字需要一个连接。您可能应该等到有连接后再发出。不确定这是否可以帮助您,但您可以参考此链接以进一步移动stackoverflow.com/questions/36460280/…
-
是的,有帮助。