Signals were always being sent down - changed flag never cleared. This wiped out the user input area in chat. (#13)

Publish every 100ms

Co-authored-by: João Gonçalves <joao.goncalves01@gmail.com>
This commit is contained in:
Jeff Winkler
2025-11-15 06:40:07 -05:00
committed by GitHub
parent 03019364ca
commit 762635d7d9
3 changed files with 21 additions and 11 deletions

View File

@@ -1,7 +1,6 @@
package main
import (
"fmt"
"math/rand"
"github.com/go-via/via"
@@ -84,6 +83,11 @@ func main() {
}
`)),
)
// Uncomment for inspector. Plugin candidate.
// v.AppendToFoot(
// h.Script(h.Src("https://cdn.jsdelivr.net/gh/dataSPA/dataSPA-inspector@latest/dataspa-inspector.bundled.js"), h.Type("module")),
// h.Raw("<dataspa-inspector/>"),
// )
rooms := NewRooms[Chat, UserInfo]("Clojure", "Dotnet", "Go", "Java", "JS", "Kotlin", "Python", "Rust")
rooms.Start()
@@ -103,9 +107,7 @@ func main() {
if !ok {
return
}
fmt.Println(">> switchRoom to ", newRoom.Name)
if currentRoom != nil && currentRoom != newRoom {
fmt.Println("LEAVING old room")
currentRoom.Leave(&currentUser)
}
newRoom.Join(&UserAndSync[Chat, UserInfo]{user: &currentUser, sync: c})
@@ -136,8 +138,6 @@ func main() {
})
})
statement.SetValue("")
// Update the UI right away so feels snappy.
c.Sync()
}
})

View File

@@ -129,7 +129,7 @@ func NewRoom[TR any, TU comparable](n string) *Room[TR, TU] {
func (r *Room[TR, TU]) run() {
defer close(r.done)
publishTicker := time.NewTicker(250 * time.Millisecond)
publishTicker := time.NewTicker(100 * time.Millisecond)
defer publishTicker.Stop()
for {
select {