diff --git a/game/builtin/player.go b/game/builtin/player.go index 90c1704..e13ff83 100644 --- a/game/builtin/player.go +++ b/game/builtin/player.go @@ -24,11 +24,6 @@ func (slf *Player[ID]) Send(packet []byte, messageType ...int) { slf.conn.Write(packet, messageType...) } -// SyncSend 向该玩家同步发送数据 -func (slf *Player[ID]) SyncSend(packet []byte, messageType ...int) error { - return slf.conn.SyncWrite(packet, messageType...) -} - // Close 关闭玩家 func (slf *Player[ID]) Close() { slf.conn.Close() diff --git a/game/player.go b/game/player.go index 0e25cd1..dd8ec32 100644 --- a/game/player.go +++ b/game/player.go @@ -7,8 +7,6 @@ type Player[ID comparable] interface { // Send 发送数据包 // - messageType: websocket模式中指定消息类型 Send(packet []byte, messageType ...int) - // SyncSend 同步发送数据包 - SyncSend(packet []byte, messageType ...int) error // Close 关闭玩家并且释放其资源 Close() } diff --git a/server/conn.go b/server/conn.go index f656dfe..9bb5b8d 100644 --- a/server/conn.go +++ b/server/conn.go @@ -93,42 +93,6 @@ func (slf *Conn) GetIP() string { return slf.ip } -// Write 向连接中写入数据 -// - messageType: websocket模式中指定消息类型 -func (slf *Conn) Write(data []byte, messageType ...int) { - cp := slf.packetPool.Get() - if len(messageType) > 0 { - cp.websocketMessageType = messageType[0] - } - cp.packet = data - slf.mutex.Lock() - slf.packets = append(slf.packets, cp) - slf.mutex.Unlock() -} - -func (slf *Conn) SyncWrite(data []byte, messageType ...int) error { - if slf.server.network == NetworkWebsocket { - if len(messageType) > 0 { - return slf.ws.WriteMessage(messageType[0], data) - } else { - return slf.ws.WriteMessage(slf.server.websocketWriteMessageType, data) - } - } else { - if slf.gn != nil { - switch slf.server.network { - case NetworkUdp, NetworkUdp4, NetworkUdp6: - return slf.gn.SendTo(data) - default: - return slf.gn.AsyncWrite(data) - } - } else if slf.kcp != nil { - _, err := slf.kcp.Write(data) - return err - } - } - return nil -} - // Close 关闭连接 func (slf *Conn) Close() { slf.mutex.Lock() @@ -170,6 +134,19 @@ func (slf *Conn) IsWebsocket() bool { return slf.server.network == NetworkWebsocket } +// Write 向连接中写入数据 +// - messageType: websocket模式中指定消息类型 +func (slf *Conn) Write(data []byte, messageType ...int) { + cp := slf.packetPool.Get() + if len(messageType) > 0 { + cp.websocketMessageType = messageType[0] + } + cp.packet = data + slf.mutex.Lock() + slf.packets = append(slf.packets, cp) + slf.mutex.Unlock() +} + // writeLoop 写循环 func (slf *Conn) writeLoop() { slf.packetPool = synchronization.NewPool[*connPacket](64, @@ -196,10 +173,10 @@ func (slf *Conn) writeLoop() { continue } packets := slf.packets[0:] - slf.packets = slf.packets[:0] + slf.packets = slf.packets[0:0] slf.mutex.Unlock() - for _, data := range packets { - data := data + for i := 0; i < len(packets); i++ { + data := packets[i] if len(data.packet) == 0 { for _, packet := range packets { slf.packetPool.Release(packet)