连续从服务器获取数据

Vinupriya Arivazhagan

我需要不断从服务器获取数据。我进行了搜索,然后想到使用NSTimer在特定的时间间隔内在后台线程中连续调用服务。

    var timer = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: "callService", userInfo: nil, repeats: true)

    func callService()
     {
       let qualityOfServiceClass = QOS_CLASS_BACKGROUND
       let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
        .....

        dispatch_async(dispatch_get_main_queue(), { () -> Void in
          ......
        })
      })
     }

我们可以这样吗?这是这样做的好方法吗?还是有其他方法可以做到这一点?我真的想知道如何didUpdateLocationCLLocationManagerDelegate工作。我想实现类似的方法。请在此提出您的想法。

Vinupriya Arivazhagan

我通过socket.io实现了它。我看到了这个网站http://geoloqi.com/blog/2011/09/building-a-real-time-location-based-urban-geofencing-game-with-socket-io-redis-node-js-and- sinatra-synchrony /#comments当我浏览该链接时,我可以理解它们使用NSTimer在特定时间间隔调用服务的方式与我一样。但是它消耗了巨大的电池电量。然后他们使用了Socket。

我从github https://github.com/socketio/socket.io-client-swift获得了swift 2的socket.io代码

let socket = SocketIOClient(socketURL: "localhost:8080")

socket.on("connect") {data, ack in
    print("socket connected")
}

socket.on("currentAmount") {data, ack in
    if let cur = data[0] as? Double {
        socket.emitWithAck("canUpdate", cur)(timeoutAfter: 0) {data in
            socket.emit("update", ["amount": cur + 2.50])
        }

        ack?.with("Got your currentAmount", "dude")
    }
}

socket.connect()

它解决了我的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章