Я использую Http4s для подключения службы веб-сокетов, которую я могу использовать для связи между этой серверной службой и пользовательским интерфейсом (обновления состояния трубопровода и% выполнения для пакетного задания).
Я использую Пример веб-сокета BlazeBuilder для настройки службы.
Служба работает, но я пытаюсь создать сообщения сокета изнутриэкземпляр класса.Например, я хочу создать экземпляр работника, передать ссылку на соединение с сокетом и иметь возможность передавать данные в это соединение.К сожалению, мне очень трудно сделать эту работу!Это гораздо проще в Python и JS.
См. Код ниже, который в основном является примером кода, который я связал выше.В месте, где я вызываю Stream.emit (...), как я могу передать ссылку на этот "toClient" и по-прежнему передавать его?Если я передаю экземпляр toClient в экземпляр класса, он, похоже, не работает.
case GET -> Root / "ws" =>
val toClient: Stream[F, WebSocketFrame] = Stream.emit(Text("How can I do this from a class instance?"))
val fromClient: Sink[F, WebSocketFrame] = _.evalMap { (ws: WebSocketFrame) =>
ws match {
case Text(t, _) => F.delay(println(t))
case f => F.delay(println(s"Unknown type: $f"))
}
}
WebSocketBuilder[F].build(toClient, fromClient)