#ios #swift #websocket #closures #starscream
Вопрос:
Я использую StarScream в своем проекте для обработки веб-сокетов.
Моя идея состояла в том, чтобы создать базовый класс для обработки всех событий синтаксического анализа и прослушивания входящих событий.
BaseClass { let socket: WebSocket() init() { self.socket = WebSocket(someRequest) } public func listenToEvents() { self.socket.onEvent = { event in.... switch event { case text(let text) { //Send some closure to child class. } } } } ChildClass: BaseClass { public func listenToEvent(success: @escaping (MyClosure) -gt; ()) { self.listenToEvent { //Some closure to view controller with Coddle model. success(returndCodableModel) } } }
Теперь я хочу создать дочерние классы этого базового класса, и каждый ребенок будет вызывать прослушивание событий и возвращать свою собственную модель няньки в зависимости от полученных данных.
Обратите внимание, что у меня есть только один экземпляр самого WebSocket, хранящийся в одном элементе.
Проблема в том, что когда я вызываю дочерний класс каждый раз, когда я говорю дочернему классу записать в сокет, вызывается только закрытие из последнего события, которое я отправил.
Как мне добиться такого желаемого поведения с помощью StarScream?
Спасибо за помощь.