美文网首页
Socket.IO-Client-Swift使用问题记录-01

Socket.IO-Client-Swift使用问题记录-01

作者: FreshAlpha | 来源:发表于2018-05-03 14:14 被阅读0次

1.连接socket,路径错误,poll message报404,解决方案,初始化SocketManager的时候,在config中自定义路径。

config: [.log(true), .connectParams(["token": sessionID,"uid": uid]), .path("/websocket/")]

2.在连接socket之前,URL上要拼接token和uid验证用户信息。而token和uid,需要在http用户登录后,分别http请求sessionID和userinfo。

使用DispatchGroup的notify,并结合DispatchGroup的enter和leave,能很好地解决这种异步调用组合的问题。

//sessionID和userID两个请求都成功后再回调callBack: ResultHandler

            varuserInfoError:SocketErrorType= .success

            letgroup =DispatchGroup()

            letuserInfoRequest =DispatchQueue(label:"userInfo")

            group.enter()

            userInfoRequest.async(group: group, execute: {

                self.requestUserInfo(callBack: { (error)in

                    userInfoError = error

                    group.leave()

                })

            })

            //SessionID的请求

            varsessionIDError:SocketErrorType= .success

            letsessionIDRequest =DispatchQueue(label:"sessionID")

            group.enter()

            sessionIDRequest.async(group: group, execute: {

                self.getSessionID(callBack: { (error)in

                    sessionIDError = error

                    group.leave()

                })

            })

            //都请求并回调完成

            group.notify(queue:DispatchQueue.main) {

                switch(userInfoError, sessionIDError) {

                case(.success, .success):

                    callBack?(.success)

                case(.success,_):

                    callBack?(sessionIDError)

                case(_, .success):

                    callBack?(userInfoError)

                default:

                    callBack?(userInfoError)//传userInfo的error

                }

            }

相关文章

网友评论

      本文标题:Socket.IO-Client-Swift使用问题记录-01

      本文链接:https://www.haomeiwen.com/subject/gswkrftx.html