My chat handler basically looks like this. I am not sure this Is the correct approach.
public typealias ServerDataReceived = (ChatData) -> ()
class ChatHandler: ChannelOutboundHandler, ChannelInboundHandler {
public var dataReceived: ServerDataReceived?
public func channelRead(context: ChannelHandlerContext, data: NIOAny){
switch self.currentlyWaitingFor {
case .dataFromServer:
var result = self.unwrapInboundIn(data)
let readableBytes = result.readableBytes
if let received = result.readData(length: readableBytes) {
//dataReceived is always is nil so never runs
if let dataReceived = dataReceived {
print(dataReceived, "2")
let chatData = ChatData(data: received)
dataReceived(chatData)
}
}
case .error(let error):
fatalError("We have a fatal receiving data from the server: \(error)")
}
}
}