代码拉取完成,页面将自动刷新
package logic
import (
"fmt"
"log"
"github.com/google/uuid"
"github.com/lonng/nano"
"github.com/lonng/nano/component"
"github.com/lonng/nano/examples/demo/tadpole/logic/protocol"
"github.com/lonng/nano/session"
)
// World contains all tadpoles
type World struct {
component.Base
*nano.Group
}
// NewWorld returns a world instance
func NewWorld() *World {
return &World{
Group: nano.NewGroup(uuid.New().String()),
}
}
// Init initialize world component
func (w *World) Init() {
session.Lifetime.OnClosed(func(s *session.Session) {
w.Leave(s)
w.Broadcast("leave", &protocol.LeaveWorldResponse{ID: s.ID()})
log.Println(fmt.Sprintf("session count: %d", w.Count()))
})
}
// Enter was called when new guest enter
func (w *World) Enter(s *session.Session, msg []byte) error {
w.Add(s)
log.Println(fmt.Sprintf("session count: %d", w.Count()))
return s.Response(&protocol.EnterWorldResponse{ID: s.ID()})
}
// Update refresh tadpole's position
func (w *World) Update(s *session.Session, msg []byte) error {
return w.Broadcast("update", msg)
}
// Message handler was used to communicate with each other
func (w *World) Message(s *session.Session, msg *protocol.WorldMessage) error {
msg.ID = s.ID()
return w.Broadcast("message", msg)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。