我想编写在Swift中用nodejs写的这段代码
io.sockets.in('[email protected]').emit('chat', 'Hello i am julia');
我尝试了这个,但是没有用:
socket.emit("chat", with: ["JLA" , "[email protected]"])
您可以使用Swift语言使用以下代码。
import SocketIO
import Foundation
let serverURL = "YourServerURL"
class SocketOpration {
static let shared = SocketOpration(socketURL: URL(string: serverURL)!)
let socketURL: URL
var socket:SocketIOClient!
var manager:SocketManager!
init(socketURL: URL) {
self.socketURL = socketURL
self.manager = SocketManager(socketURL: self.socketURL, config: [.log(false)])
self.socket = self.manager.defaultSocket
}
func setup() {
socket.on(clientEvent: .connect) {[weak self] data, ack in
print("socket connected")
}
socket.on(clientEvent: .disconnect) {[weak self] data, ack in
print("socket disconnected")
}
// Get emit Call via On method ( emit will fire from Node )
socket.on("chat") { [weak self](data, ack) in
if data.count > 0 {
}
}
}
func chatEmail(senderName: String, email: String) {
socket.emit("chat", with: [senderName , email]])
}
}
用途:-
SocketOpration.shared.chatEmail(senderName: "JLA", email: "[email protected]")
干杯!
您可以将Socket.IO 客户端用于Swift。
import SocketIO
let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true), .compress])
let socket = manager.defaultSocket
socket.on(clientEvent: .connect) {data, ack in
print("socket connected")
}
socket.on("currentAmount") {data, ack in
guard let cur = data[0] as? Double else { return }
socket.emitWithAck("canUpdate", cur).timingOut(after: 0) {data in
socket.emit("update", ["amount": cur + 2.50])
}
ack.with("Got your currentAmount", "dude")
}
socket.connect()