如何使用蒸汽正确设置插座

时间:2018-02-19 22:07:16

标签: swift websocket vapor

我正在使用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?
}

0 个答案:

没有答案