Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Socket.io-维护插座连接(Swift)_Ios_Swift_Socket.io - Fatal编程技术网

Ios Socket.io-维护插座连接(Swift)

Ios Socket.io-维护插座连接(Swift),ios,swift,socket.io,Ios,Swift,Socket.io,我正在制作一个使用socket.io的iOS应用程序。场景非常简单,一个人预订一次冒险,即使用emit命令发送数据。之后,我使用了socket.on从服务器返回响应。这是完美的工作了一段时间,但现在我面临的问题。数据既没有到达服务器,也没有返回响应。 我搜索了这个问题,得到的理解是: 插座在某个点断开连接,因此停止工作。在发送数据之前,我甚至使用了套接字。重新连接,但它不起作用 我在node.js中找到了一个参数forceNew,但在swift中没有找到任何替代参数 以下是我的代码(与socke

我正在制作一个使用socket.io的iOS应用程序。场景非常简单,一个人预订一次冒险,即使用emit命令发送数据。之后,我使用了socket.on从服务器返回响应。这是完美的工作了一段时间,但现在我面临的问题。数据既没有到达服务器,也没有返回响应。 我搜索了这个问题,得到的理解是:

插座在某个点断开连接,因此停止工作。在发送数据之前,我甚至使用了
套接字。重新连接
,但它不起作用

我在node.js中找到了一个参数
forceNew
,但在swift中没有找到任何替代参数

以下是我的代码(与socket.io相关):

在AppDelegate中:

AppDelegate.socket = SocketIOClient(socketURL: URL(string: "######")!, config: [.log(true), .compress])
AppDelegate.socket.connect ()
在ViewController中:

override func viewDidLoad() {
        super.viewDidLoad()

        socket = AppDelegate.socket

          self.socket.on("book-adventure-seeker") {[weak self] data, ack in
              print (data)
         }
    }
    @IBAction func bookAdventureTapped(_ sender: Any) {

        let jwtToken = UserDefaults.standard.string(forKey: "jwtToken")

        let data = ["adventure_id": adventureId, "jwt": jwtToken] as [String : Any]
        self.socket.emit("book-adventure", data)
    }
日志是:

2017-10-20 09:45:04.665 CuufyPrototype[2591:94370] LOG SocketEngine: Writing ws:  has data: false
2017-10-20 09:45:08.541 CuufyPrototype[2591:93618] LOG SocketIOClient: Emitting: 2["book-adventure",{"jwt":"######","adventure_id":"######"}]
2017-10-20 09:45:08.541 CuufyPrototype[2591:94370] LOG SocketEngine: Sending ws:  as type: 2
SocketIOClientStatus
2017-10-20 09:45:22.804 CuufyPrototype[2591:94370] LOG SocketEngine: Writing ws: 2["book-adventure",{"jwt":"######","adventure_id":"#####"}] has data: false
2017-10-20 09:45:22.805 CuufyPrototype[2591:94370] LOG SocketEngine: Sending ws: 2["book-adventure",{"jwt":"#######","adventure_id":"######"}] as type: 4
2017-10-20 09:45:22.807 CuufyPrototype[2591:94370] LOG SocketEngine: Writing ws:  has data: false
2017-10-20 09:45:22.807 CuufyPrototype[2591:94370] LOG SocketEngine: Sending ws:  as type: 2
2017-10-20 09:45:22.810 CuufyPrototype[2591:93661] ERROR SocketEngine: 
2017-10-20 09:45:22.811 CuufyPrototype[2591:93618] ERROR SocketIOClient: 
2017-10-20 09:45:22.811 CuufyPrototype[2591:93618] LOG SocketIOClient: Handling event: error with data: [""]
2017-10-20 09:45:22.811 CuufyPrototype[2591:93618] LOG SocketIOClient: Handling event: statusChange with data: [SocketIO.SocketIOClientStatus]
2017-10-20 09:45:22.812 CuufyPrototype[2591:93618] LOG SocketIOClient: Starting reconnect
2017-10-20 09:45:22.812 CuufyPrototype[2591:93618] LOG SocketIOClient: Handling event: reconnect with data: [""]
2017-10-20 09:45:22.812 CuufyPrototype[2591:93618] LOG SocketIOClient: Trying to reconnect
2017-10-20 09:45:22.812 CuufyPrototype[2591:93618] LOG SocketIOClient: Handling event: reconnectAttempt with data: [-1]
2017-10-20 09:45:22.812 CuufyPrototype[2591:93618] LOG SocketIOClient: Handling event: statusChange with data: [SocketIO.SocketIOClientStatus]
甚至我也尝试在AppDelegate中使用
socket.on,如下所示:(如官方文档中的示例)

但对我来说还是不行


更新:有时在发出命令时,
引擎正在关闭
出现在日志中,但我不知道如何解决此问题

将此代码用于swift中的
forceNew

let config : [String: Any] = ["log": true,
                                  "compress": true,
                                  "forcePolling": true,
                                  "forceNew": true]
    var socketManager = SocketManager(socketURL: url, config: config)
    var socket: SocketIOClient = socketManager.defaultSocket
let config : [String: Any] = ["log": true,
                                  "compress": true,
                                  "forcePolling": true,
                                  "forceNew": true]
    var socketManager = SocketManager(socketURL: url, config: config)
    var socket: SocketIOClient = socketManager.defaultSocket