我目前正在开发一个与聊天应用程序非常相似的应用程序,所以我创建了自己的服务器,并在应用程序中使用流向服务器发送消息并从中检索消息。
我有许多功能需要在不按按钮或其他东西的情况下触发,例如,当我尝试获取我注册的朋友或组的在线用户时,我想在视图有时获取此命令的结果已加载,因此我在要求之前获得了结果
我试过这个:
override func viewDidLoad() {
self.initNetworkCommunication()
self.button.sendActionsForControlEvents(UIControlEvents.TouchUpInside)
var indexSet = NSIndexSet(index: 0)
self.table.reloadSections(indexSet, withRowAnimation: UITableViewRowAnimation.Automatic)
self.table.reloadData()
super.viewDidLoad()
}
func initNetworkCommunication() {
var readStream:Unmanaged<CFReadStream>?;
var writeStream:Unmanaged<CFWriteStream>? ;
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,"localhost",8023,&readStream,&writeStream)
inputStream = readStream!.takeUnretainedValue()
outputStream = writeStream!.takeUnretainedValue()
self.inputStream!.delegate=self
self.outputStream!.delegate = self
self.inputStream!.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
self.outputStream!.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
self.inputStream.open()
self.outputStream.open()
var msg = "iam:\(self.name).groupView\r\n" //i connect to the server in this view
var ptr = msg.nulTerminatedUTF8
var res = outputStream.write(msg, maxLength:msg.lengthOfBytesUsingEncoding(NSASCIIStringEncoding))
}
@IBAction func getGroups(sender : UIButton) {
println("it is pressed")
var msg = "mygroups:\(self.name):sdadsa"
var res = outputStream.write(msg, maxLength: msg.lengthOfBytesUsingEncoding(NSASCIIStringEncoding))
}
我遇到的问题是,在某些情况下触发了 touchUpInside 事件,我从服务器收到了我需要的消息,而其他时候却没有
我的第一个想法是,发生这种情况是因为服务器一个接一个地收到太多消息并且变得“忙碌”,但为什么有时它会起作用?
任何想法或意见都会对我有很大帮助