diff --git a/examples/chat/client/main.go b/examples/chat/client/main.go index 6be68df..5ed7e8a 100644 --- a/examples/chat/client/main.go +++ b/examples/chat/client/main.go @@ -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) } } diff --git a/examples/chat/server/main.go b/examples/chat/server/main.go index 444cb7b..abf17e8 100644 --- a/examples/chat/server/main.go +++ b/examples/chat/server/main.go @@ -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) } diff --git a/examples/ping/client/main.go b/examples/ping/client/main.go index 2bff04d..e9167ba 100644 --- a/examples/ping/client/main.go +++ b/examples/ping/client/main.go @@ -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) } }