feat 排队
This commit is contained in:
@@ -28,9 +28,9 @@ const (
|
||||
|
||||
// ISocketServer 由应用层实现
|
||||
type ISocketServer interface {
|
||||
OnOpen(ISocketConn) ([]byte, Action) // 开启连接
|
||||
OnHandShake(ISocketConn, []byte, func(ISocketConn, []byte)) Action // 开始握手
|
||||
OnMessage(ISocketConn, []byte) Action // 收到消息
|
||||
OnOpen(ISocketConn) ([]byte, Action) // 开启连接
|
||||
OnHandShake(ISocketConn) Action // 开始握手
|
||||
OnMessage(ISocketConn, []byte) Action // 收到消息
|
||||
OnPong(ISocketConn)
|
||||
OnClose(ISocketConn, error) Action // 关闭连接
|
||||
OnTick() (time.Duration, Action)
|
||||
|
||||
@@ -103,7 +103,15 @@ func (s *WSServer) OnTraffic(c gnet.Conn) gnet.Action {
|
||||
data, action := ws.upgrade()
|
||||
if len(data) > 0 {
|
||||
s.unUpgradeConn.Delete(c.RemoteAddr().String())
|
||||
action = gnet.Action(s.i.OnHandShake(ws, data, s.OnHandShakeFinish))
|
||||
action = gnet.Action(s.i.OnHandShake(ws))
|
||||
if action == gnet.None {
|
||||
if err := ws.Conn.AsyncWrite(data, nil); err != nil {
|
||||
ws.logger.Errorf("OnTraffic upgrade AsyncWrite err: %v", err)
|
||||
if err = ws.Close(); err != nil {
|
||||
ws.logger.Errorf("OnTraffic upgrade Close error: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return action
|
||||
}
|
||||
@@ -174,14 +182,3 @@ func (s *WSServer) OnTick() (delay time.Duration, action gnet.Action) {
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// OnHandShakeFinish 握手完成
|
||||
func (s *WSServer) OnHandShakeFinish(conn socket.ISocketConn, hsResp []byte) {
|
||||
ws := conn.(*WSConn)
|
||||
if err := ws.Conn.AsyncWrite(hsResp, nil); err != nil {
|
||||
ws.logger.Errorf("OnHandShakeFinish err: %v", err)
|
||||
if err = ws.Close(); err != nil {
|
||||
ws.logger.Errorf("OnHandShakeFinish Close error: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user