私は新しいSwiftです。 iPhoneでチャットをしたいので、クライアントsokectを使用する必要があります。これを作る方法。私にアドバイスまたは例を挙げてください。私はこれを試しました https://github.com/socketio/socket.io-client-Swift 接続されていないので、このコードを試しました
let client:TCPClient = TCPClient(addr: "89.236.254.27", port: 9000)
let (success,errmsg) = client.connect(timeout: 1)
if success {
let (success,errmsg) = client.send(str:"Hello World!")
if success {
let data = client.read(1024 * 10)
if let d = data {
if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) {
print(str)
}
}
} else {
print(errmsg)
}
} else {
print(errmsg)
}
このコードを変更した後:
override func viewDidLoad() {
super.viewDidLoad()
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
let client:TCPClient = TCPClient(addr: "89.236.254.27", port: 9000)
var (success, errmsg)=client.connect(timeout: 1)
if success {
var (isSuccess, errorMessage) = client.send(str: "Hello!")
if success {
let data = client.read(1024 * 4)
if let d = data {
if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) as? String {
print(str)
}
}
} else {
print(errmsg)
}
} else {
print(errmsg)
}
dispatch_async(dispatch_get_main_queue(), {
() -> Void in
print("This is run on the main queue, after the previous code in outer block")
})
})
}
私はSwiftSocket
接続にTCP
https://github.com/swiftsocket/SwiftSocket を使用しています。使い方は簡単です。たとえば、使用する場合(コメントを追加します):
私はこのlibを使用するためのラッパーを持っています。これは、リクエストを送信してレスポンスを取得する方法です。
private func blockingRequest(data: String, client: TCPClient?) -> (data: String?, error: ConnectionError?) {
// It use ufter connection
if client != nil {
// Send data
var (isSuccess, errorMessage) = client!.send(str: data)
if isSuccess {
// Read response data
var data = client!.read(1024*10)
if let d = data {
// Create String from response data
if let str = NSString(bytes: d, length: d.count, encoding: NSUTF8StringEncoding) as? String {
return (data: str, error: nil)
} else {
return (data: nil, error: ConnectionError.BadResponseData)
}
} else {
return (data: nil, error: ConnectionError.BadResponseData)
}
} else {
println(errorMessage)
return (data: nil, error: ConnectionError.RequestError)
}
} else {
return (data: nil, error: ConnectionError.RequestError)
}
}
NSStreamまたはサードパーティのAPI。私のお気に入りは CocoaAsyncSocket で、私もSwift自分でバージョンを作成しています。確認してください Swidis (まだベータ版)
また、CocoaAsyncSocketについて言及するには、Swiftとして使用するために bridge-header.h を含める必要があります。