examples/ping: Client accepts pong
This commit is contained in:
parent
1cf9d47cae
commit
11e972c696
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user