我正在使用steam来调用Web套接字应用程序。我不习惯使用蒸汽和服务器端代码。现在我将所有主要代码放在运行文件夹
中的main.swift文件中这是我的代码:
let config = try Config()
try config.setup()
let drop = try Droplet(config)
try drop.setup()
var instance = [(socket: WebSocket, uuid: String)]()
drop.socket("log") { req, ws in
background {
while ws.state == .open {
try? ws.ping()
drop.console.wait(seconds: 10) // every 10 seconds
}
}
ws.onText = { ws, text in
//print ("log is \(text)")
//This is where my code is about to handle data sent and received by the socket.
let logMessage:JSON = try JSON(bytes: text.utf8.array)
guard logMessage != nil else {try ws.send("issue with json"); return}
if logMessage == "pair" {
instance.append((ws, "383485838498"))
}else if logMessage == "message" {
for sock in instance {
//send data to all saved socket instances
}
}
}
ws.onClose = { ws, _, _, _ in
print ("log sokcet closeing?")
try ws.send("log socket closed")
}
}
我将套接字的所有实例保存在上面名为instance
的局部变量中。然后我将数据从另一个套接字发送到那些保存的实例。我有一种感觉,我做的事情是完全错误的,但现在这是有效的。这是最好的方法吗?或者有更好的方法吗?
我没有使用类型为(socket: WebSocket, uuid: String)
的数组,而是使用类型为Instance
的数组,这是我在下面定义的结构。现在我不能,因为它说使用未声明的类型'实例'。我想使用类似let app = Application()
之类的内容,但同样,它给了我这个问题:Use of unresolved identifier 'Application'
。
这是我想要使用的结构
struct Instance {
var socket:WebSocket?
var uuid:String?
}