如何正确使用socket.io-client-swift

时间:2018-03-13 04:10:33

标签: ios swift socket.io

我在互联网上搜索了一个适当的例子,用于在iOS(实际上是客户端 - null)上使用Socket.IO并使用明确的编码示例。任何人都可以帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

这里是socket io客户端的一个例子。

import SocketIO    
class soket {
    var lat = ""
    var lng = ""
    let appDelegate = UIApplication.shared.delegate as!AppDelegate
    init(lat: String, lng: String) {
        self.lat = lat
        self.lng = lng
    }
    func connect()  {
        print("llamada al socket")
        print(contantes.init().addres)
        let socket = SocketIOClient(socketURL: URL(string: contantes.init().addres)!,config: [.connectParams(["accessToken" : appDelegate.token]),.forcePolling(true),.nsp("/vendedor"), .log(true)])
        let myJSON = [
            "lng":lng,
            "lat":lat,
            "idvendedor":appDelegate.idSeller
        ]
        socket.on("connect") {data, ack in
            print("socket connected")
            socket.emit("setLocation",myJSON)
            print("Mostrando el Json: \(myJSON)")
        }
        socket.on("locationChanged", callback: {_,_ in
            print("disconnected")
            socket.disconnect()
        })
        socket.connect()
    }
}

此类是一个简单的套接字,用于向服务器端报告设备位置,在这种情况下,服务器端使用命名空间,因此套接字必须加入它才能发送数据。这是代码如何在viewController中调用

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    if let location = locations.first {
        let sok = soket(lat: String(location.coordinate.latitude),lng:String(location.coordinate.longitude))
        sok.connect()
        locationManager.stopUpdatingLocation()
    }
}

套接字背后的主要概念是配置处理程序以监听或从服务器发出数据并进行连接。 这里是另一个例子Socket.IO client integration in iOS Swift