套接字连接用户在 swift 中多次触发
Socket connectUser getting triggered multiple times in swift
我已经从github下载了一个示例套接字项目 https://github.com/appcoda/SocketIOChat
当我运行应用程序时,它工作正常,但问题是,当我退出用户并输入另一个名称进行连接时,connectUser 方法会多次触发,具体取决于它连接的时间。我只希望它连接一次。例如,下面是上面示例中的代码段
func askForNickname() {
let alertController = UIAlertController(title: "SocketChat", message: "Please enter a nickname:", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addTextFieldWithConfigurationHandler(nil)
let OKAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { (action) -> Void in
let textfield = alertController.textFields![0]
if textfield.text?.characters.count == 0 {
self.askForNickname()
}
else {
self.nickname = textfield.text
SocketIOManager.sharedInstance.connectToServerWithNickname(self.nickname, completionHandler: { (userList) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if userList != nil {
print("USerlIst:'(userList)")
self.users = userList
self.tblUserList.reloadData()
self.tblUserList.hidden = false
}
})
})
}
}
alertController.addAction(OKAction)
presentViewController(alertController, animated: true, completion: nil)
}
在这里,每次当我使用用户名进入聊天时,connectToServerWithNickname
方法都会被我尝试输入名称并多次打印列表的次数触发。我已经检查过,在上面的示例中,套接字被创建为单例类,并且每次都使用相同的实例。我应该怎么做才能防止这种多次调用?
当我搜索时,似乎每个socket.on都添加一个处理程序,所以我通过在调用on事件之前添加socket.off('event')来修复它。
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 如何使用offer/answer交换来自两个对等连接的流
- 在Qualtrics中,介绍如何动态连接两个滑块
- 使用优化器在慢速连接上加载main.js时需要js超时
- 如果连接类型为none,则Javascript Function Only警报
- GTK百老汇支持同时连接
- 在node.js中写入ECONNRESET错误和套接字连接检查
- 如何将所有JS文件连接到一个文件夹中
- 在cordova android应用程序中连接数据库
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 套接字连接用户在 swift 中多次触发
- 套接字 IO 未使用 swift 连接到服务器