examples/ping: Client accepts pong
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user