Improve Notification WS
This commit is contained in:
@@ -182,8 +182,8 @@ fun Application.module(env: Env = PROD) {
|
||||
}
|
||||
|
||||
install(WebSockets) {
|
||||
pingPeriod = Duration.ofSeconds(5) // Disabled (null) by default
|
||||
timeout = Duration.ofSeconds(3)
|
||||
pingPeriod = Duration.ofSeconds(60) // Disabled (null) by default
|
||||
timeout = Duration.ofSeconds(15)
|
||||
maxFrameSize = Long.MAX_VALUE // Disabled (max value). The connection will be closed if surpassed this length.
|
||||
masking = false
|
||||
}
|
||||
@@ -204,7 +204,6 @@ fun Application.module(env: Env = PROD) {
|
||||
/* Declare publisher on event */
|
||||
val publisher = Publisher(get(), get())
|
||||
subscribe(EntityEvent.Type.UPDATE_ARTICLE.event) {
|
||||
println("Article is updated ${it.target.id}")
|
||||
publisher.publish(it)
|
||||
}
|
||||
|
||||
|
||||
@@ -21,10 +21,9 @@ import kotlinx.coroutines.launch
|
||||
fun Route.notificationArticle(redis: RedisAsyncCommands<String, String>, client: HttpClient) {
|
||||
webSocket("/notifications") {
|
||||
val citizenId = call.citizen.id
|
||||
|
||||
launch {
|
||||
val job = launch {
|
||||
var score = 0.0
|
||||
while (true) {
|
||||
while (!outgoing.isClosedForSend) {
|
||||
val result = redis.zrangebyscoreWithScores(
|
||||
"notification:$citizenId",
|
||||
Range.from(
|
||||
@@ -41,6 +40,7 @@ fun Route.notificationArticle(redis: RedisAsyncCommands<String, String>, client:
|
||||
// TODO terminate coroutine after connection close !
|
||||
}
|
||||
}
|
||||
job.join()
|
||||
|
||||
// TODO mark notification as read
|
||||
incoming.consumeAsFlow().mapNotNull { it as? Frame.Text }.collect {
|
||||
|
||||
Reference in New Issue
Block a user