Revert "feat(websocket): update websocket code"

This reverts commit 27e495722e.
This commit is contained in:
yicheng 2020-02-14 21:05:32 +08:00
parent d94aa092d9
commit 4a9a0e52d6

View File

@ -266,17 +266,18 @@ extension ApiRequest {
}
private func requestTrafficInfo() {
trafficWebSocket?.forceDisconnect()
trafficWebSocket?.disconnect(forceTimeout: 0, closeCode: 0)
trafficWebSocketRetryCount += 1
if trafficWebSocketRetryCount > 5 {
NSUserNotificationCenter.default.postStreamApiConnectFail(api: "Traffic")
return
}
guard let url = URL(string: ConfigManager.apiUrl.appending("/traffic")) else { return }
var request = URLRequest(url: url)
request.headers = ApiRequest.authHeader()
let socket = WebSocket(request: request)
let socket = WebSocket(url: URL(string: ConfigManager.apiUrl.appending("/traffic"))!)
for header in ApiRequest.authHeader() {
socket.request.setValue(header.value, forHTTPHeaderField: header.name)
}
socket.delegate = self
socket.connect()
trafficWebSocket = socket
@ -291,11 +292,11 @@ extension ApiRequest {
}
let uriString = "/logs?level=".appending(ConfigManager.selectLoggingApiLevel.rawValue)
guard let url = URL(string: ConfigManager.apiUrl.appending(uriString)) else { return }
var request = URLRequest(url: url)
request.headers = ApiRequest.authHeader()
let socket = WebSocket(request: request)
let socket = WebSocket(url: URL(string: ConfigManager.apiUrl.appending(uriString))!)
for header in ApiRequest.authHeader() {
socket.request.setValue(header.value, forHTTPHeaderField: header.name)
}
socket.delegate = self
socket.connect()
loggingWebSocket = socket
@ -303,37 +304,24 @@ extension ApiRequest {
}
extension ApiRequest: WebSocketDelegate {
func didReceive(event: WebSocketEvent, client: WebSocket) {
switch event {
case .connected:
websocketDidConnect(socket: client)
case let .text(text):
websocketDidReceiveMessage(socket: client, text: text)
case let .disconnected(err, code):
websocketDidDisconnect(socket: client, error: err, code: code)
case let .error(error):
if let error = error {
websocketDidDisconnect(socket: client,
error: error.localizedDescription,
code: UInt16((error as NSError).code))
}
default:
Logger.log("\(client) \(event)", level: .debug)
}
}
func websocketDidConnect(socket: WebSocket?) {
if socket == trafficWebSocket {
func websocketDidConnect(socket: WebSocketClient) {
guard let webSocket = socket as? WebSocket else { return }
if webSocket == trafficWebSocket {
Logger.log("trafficWebSocket did Connect", level: .debug)
} else {
Logger.log("loggingWebSocket did Connect", level: .debug)
}
}
func websocketDidDisconnect(socket: WebSocket, error: String, code: UInt16) {
Logger.log("websocketDidDisconnect: \(error) \(code)", level: .error)
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
if socket == self.trafficWebSocket {
func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
guard let err = error else {
return
}
Logger.log(err.localizedDescription, level: .error)
DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
guard let webSocket = socket as? WebSocket else { return }
if webSocket == self.trafficWebSocket {
Logger.log("trafficWebSocket did disconnect", level: .debug)
self.requestTrafficInfo()
} else {
@ -343,18 +331,15 @@ extension ApiRequest: WebSocketDelegate {
}
}
func websocketDidReceiveMessage(socket: WebSocket, text: String) {
func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
guard let webSocket = socket as? WebSocket else { return }
let json = JSON(parseJSON: text)
if socket == trafficWebSocket {
if webSocket == trafficWebSocket {
delegate?.didUpdateTraffic(up: json["up"].intValue, down: json["down"].intValue)
} else {
delegate?.didGetLog(log: json["payload"].stringValue, level: json["type"].string ?? "info")
}
}
}
extension WebSocket: Equatable {
public static func == (lhs: WebSocket, rhs: WebSocket) -> Bool {
lhs.request == rhs.request
}
func websocketDidReceiveData(socket: WebSocketClient, data: Data) {}
}