Мне нужно создать приложение с нуля, это приложение на базе сокетов, поэтому все функции основаны на действиях с сокетами, входе в систему, регистрации, получении бизнес-данных…
Архитектура, о которой я думал, это: Starscream для подключения к розетке
SocketManager, отвечающий за поддержание соединения с сокетом и обрабатывающий socketData, и несколько протоколов для информирования ответственных viewModels или viewControllers.
Проблема, с которой я столкнулся, заключается в том, что у меня есть одна функция, которая отвечает за получение и обработку сообщений сокета:
public func treatSocketMessage(message: messageEnum?) {
guard let action = message else {
return
}
}
protocol SocketDelegate: class {}
protocol DisconnectDelegate: SocketDelegate {
func socketDisconnected()
}
public enum messageEnum: String {
case disconnect = "Disconnect"
func getProtocolType() -> SocketDelegate.Type {
switch self {
case .disconnect:
return
}
}
}
У меня много сообщений, которые сокет может вернуть, и я хотел бы создать по одному делегату для каждого из них. Но я не уверен, как создать такой протокол, и если это лучшее решение для приложений сокетов, как это.