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

Posted

技术标签:

【中文标题】如何正确使用 socket.io-client-swift【英文标题】:how to use socket.io-client-swift properly 【发布时间】:2018-08-21 05:45:40 【问题描述】:

我在互联网上搜索了一个在 ios 上使用 Socket.IO 的正确示例(实际上是客户端 - socket.io-client-swift),并带有清晰的编码示例。任何人都可以帮助我解决这个问题。

【问题讨论】:

这会有所帮助:github.com/socketio/socket.io-client-swift 这里是使用icket.io制作聊天应用的教程:appcoda.com/socket-io-chat-app 谢谢@FaysalAhmed 【参考方案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

【讨论】:

谢谢。您能否解释一下这一行中的参数。'let socket = SocketIOClient(socketURL: URL(string: contantes.init().addres)!,config: [.connectParams(["accessToken" : appDelegate.token]),. forcePolling(true),.nsp("/vendor"), .log(true)]) ' 这个参数是特定于 mi 后端到 connet 但 soketURL 和 config 中后端的 url 是一个数组,其中包含后端所需的东西,在这种情况下是 accesstoken,强制轮询是启用 websokect,nsp 是在需要时加入命名空间,日志是在xcode中显示日志..

以上是关于如何正确使用 socket.io-client-swift的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 Composer 安装 Laravel 扩展包

如何正确的使用SharedPreferences

如何正确强制正确使用类方法?

如何正确使用 Composer 安装 Laravel 扩展包

如何正确使用 AsyncTask? [关闭]

如何正确的使用QWebEngineView