examples/ping: Client accepts pong

This commit is contained in:
Sasha Koshka 2025-11-19 19:34:02 -05:00
parent 1cf9d47cae
commit 11e972c696
3 changed files with 18 additions and 12 deletions

View File

@ -42,11 +42,11 @@ func main() {
break
}
switch message := message.(type) {
case *chat.MessageChat:
case chat.MessageChat:
fmt.Fprintf(os.Stdout, "%s: %s\n", message.Nickname, message.Content)
case *chat.MessageJoinNotify:
case chat.MessageJoinNotify:
fmt.Fprintf(os.Stdout, "(i) %s joined the room\n", message.Nickname)
case *chat.MessageLeaveNotify:
case chat.MessageLeaveNotify:
fmt.Fprintf(os.Stdout, "(i) %s left the room\n", message.Nickname)
}
}

View File

@ -98,20 +98,27 @@ func (this *client) transTalk(trans hopp.Trans, initial *chat.MessageJoin) error
err := this.joinRoom(trans, room)
if err != nil { return err }
defer this.leaveRoom(trans, room)
_, err = chat.Send(trans, &chat.MessageChat {
Content: "(i) joined " + room,
Nickname: "SYSTEM",
})
if err != nil { return err }
for {
message, _, err := chat.Receive(trans)
if err != nil { return err }
switch message := message.(type) {
case *chat.MessageChat:
case chat.MessageChat:
err := this.handleMessageChat(trans, room, message)
if err != nil { return err }
case *chat.MessageError:
return message
case chat.MessageError:
return &message
}
}
}
func (this *client) handleMessageChat(trans hopp.Trans, room string, message *chat.MessageChat) error {
func (this *client) handleMessageChat(trans hopp.Trans, room string, message chat.MessageChat) error {
log.Printf("(). %s #%s: %s", this.nickname, room, message.Content)
clients, done := clients.RBorrow()
defer done()
@ -124,11 +131,11 @@ func (this *client) handleMessageChat(trans hopp.Trans, room string, message *ch
return nil
}
func (this *client) relayMessage(room string, message *chat.MessageChat) error {
func (this *client) relayMessage(room string, message chat.MessageChat) error {
rooms, done := this.rooms.RBorrow()
defer done()
if trans, ok := rooms[room]; ok {
_, err := chat.Send(trans, message)
_, err := chat.Send(trans, &message)
if err != nil {
return fmt.Errorf("could not relay message: %w", err)
}

View File

@ -25,12 +25,11 @@ func main() {
go func() {
message := ping.MessagePing(0)
for {
for _ = range time.Tick(time.Second) {
log.Printf("<-- ping (%d)", message)
_, err := ping.Send(trans, &message)
handleErr(1, err)
message ++
time.Sleep(time.Second)
}
}()
@ -44,7 +43,7 @@ func main() {
break
}
switch message := message.(type) {
case *ping.MessagePong:
case ping.MessagePong:
log.Printf("--> pong (%d) from %v", message, address)
}
}