【发布时间】:2016-04-27 14:41:55
【问题描述】:
我正在为swift 实现socket.io 库。
有一个与连接服务器相关的方法,如下所示:
func connectToServerWithNickname(nickname: String) {
socket.emit("connectUser", nickname)
}
socket.emit 来电:
private func _emit(data: [AnyObject], ack: Int? = nil) {
dispatch_async(emitQueue) {
guard self.status == .Connected else {
self.handleEvent("error", data: ["Tried emitting when not connected"], isInternalMessage: true)
return
}
let packet = SocketPacket.packetFromEmit(data, id: ack ?? -1, nsp: self.nsp, ack: false)
let str = packet.packetString
DefaultSocketLogger.Logger.log("Emitting: %@", type: self.logType, args: str)
self.engine?.send(str, withData: packet.binary)
}
}
如您所见,所有内容都包含在 dispatch_async 中。我想在此方法完成并且我的应用程序连接到服务器后立即发布NSNotification,例如:
NSNotificationCenter.defaultCenter().postNotificationName(setConnectionStatus, object: self)
所以我的问题是 - 我应该如何修改我的 connectToServerWithNickname 方法,以便在一切正常时调用我的 nsnotificationcenter?
【问题讨论】:
-
as soon as this method is done and my app connects to the server这是否意味着它可以在self.engine?.send(str, withData: packet.binary)行之后完成,或者您是否必须等待服务器响应以确保您在发送通知之前已连接? -
我知道有
ack数据可以确认连接成功,所以对我来说,最好有这些信息然后拨打NSNotificationCenter。否则 - 如果那不可能 - 我可以保留第一个选项 -
您没有套接字侦听器,例如 onEvents,当您收到连接的消息时会触发?
-
@SeanLintern88 我遵循了本教程appcoda.com/socket-io-chat-app,但他们没有提到任何套接字侦听器:|
标签: ios swift socket.io dispatch-async