examples/ping: Client accepts pong
This commit is contained in:
parent
1cf9d47cae
commit
11e972c696
@ -42,11 +42,11 @@ func main() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
switch message := message.(type) {
|
switch message := message.(type) {
|
||||||
case *chat.MessageChat:
|
case chat.MessageChat:
|
||||||
fmt.Fprintf(os.Stdout, "%s: %s\n", message.Nickname, message.Content)
|
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)
|
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)
|
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)
|
err := this.joinRoom(trans, room)
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
defer this.leaveRoom(trans, room)
|
defer this.leaveRoom(trans, room)
|
||||||
|
|
||||||
|
_, err = chat.Send(trans, &chat.MessageChat {
|
||||||
|
Content: "(i) joined " + room,
|
||||||
|
Nickname: "SYSTEM",
|
||||||
|
})
|
||||||
|
if err != nil { return err }
|
||||||
|
|
||||||
for {
|
for {
|
||||||
message, _, err := chat.Receive(trans)
|
message, _, err := chat.Receive(trans)
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
switch message := message.(type) {
|
switch message := message.(type) {
|
||||||
case *chat.MessageChat:
|
case chat.MessageChat:
|
||||||
err := this.handleMessageChat(trans, room, message)
|
err := this.handleMessageChat(trans, room, message)
|
||||||
if err != nil { return err }
|
if err != nil { return err }
|
||||||
case *chat.MessageError:
|
case chat.MessageError:
|
||||||
return message
|
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)
|
log.Printf("(). %s #%s: %s", this.nickname, room, message.Content)
|
||||||
clients, done := clients.RBorrow()
|
clients, done := clients.RBorrow()
|
||||||
defer done()
|
defer done()
|
||||||
@ -124,11 +131,11 @@ func (this *client) handleMessageChat(trans hopp.Trans, room string, message *ch
|
|||||||
return nil
|
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()
|
rooms, done := this.rooms.RBorrow()
|
||||||
defer done()
|
defer done()
|
||||||
if trans, ok := rooms[room]; ok {
|
if trans, ok := rooms[room]; ok {
|
||||||
_, err := chat.Send(trans, message)
|
_, err := chat.Send(trans, &message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not relay message: %w", err)
|
return fmt.Errorf("could not relay message: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,12 +25,11 @@ func main() {
|
|||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
message := ping.MessagePing(0)
|
message := ping.MessagePing(0)
|
||||||
for {
|
for _ = range time.Tick(time.Second) {
|
||||||
log.Printf("<-- ping (%d)", message)
|
log.Printf("<-- ping (%d)", message)
|
||||||
_, err := ping.Send(trans, &message)
|
_, err := ping.Send(trans, &message)
|
||||||
handleErr(1, err)
|
handleErr(1, err)
|
||||||
message ++
|
message ++
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -44,7 +43,7 @@ func main() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
switch message := message.(type) {
|
switch message := message.(type) {
|
||||||
case *ping.MessagePong:
|
case ping.MessagePong:
|
||||||
log.Printf("--> pong (%d) from %v", message, address)
|
log.Printf("--> pong (%d) from %v", message, address)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user