fix: 优化 uds 客户端无法正常接收数据包的问题
This commit is contained in:
parent
3de1f6b9d3
commit
6792e227c0
|
@ -1,7 +1,6 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"github.com/kercylan98/minotaur/server"
|
||||
"github.com/kercylan98/minotaur/utils/concurrent"
|
||||
"net"
|
||||
|
@ -51,13 +50,13 @@ func (slf *UnixDomainSocket) Run() error {
|
|||
}
|
||||
}()
|
||||
slf.OnUDSConnectionOpenedEvent(slf)
|
||||
packet := make([]byte, 1024)
|
||||
for slf.packetPool != nil {
|
||||
reader := bufio.NewReader(slf.conn)
|
||||
packet, readErr := reader.ReadBytes('\n')
|
||||
n, readErr := slf.conn.Read(packet)
|
||||
if readErr != nil {
|
||||
panic(readErr)
|
||||
}
|
||||
slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet))
|
||||
slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet[:n]))
|
||||
}
|
||||
}()
|
||||
return nil
|
|
@ -0,0 +1,39 @@
|
|||
package client_test
|
||||
|
||||
import (
|
||||
"github.com/kercylan98/minotaur/server"
|
||||
"github.com/kercylan98/minotaur/server/client"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestUnixDomainSocket_Write(t *testing.T) {
|
||||
var close = make(chan struct{})
|
||||
srv := server.New(server.NetworkUnix)
|
||||
srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet server.Packet) {
|
||||
t.Log(packet)
|
||||
conn.Write(packet)
|
||||
})
|
||||
srv.RegStartFinishEvent(func(srv *server.Server) {
|
||||
time.Sleep(time.Second)
|
||||
cli := client.NewUnixDomainSocket("./test.sock")
|
||||
cli.RegUDSConnectionOpenedEvent(func(conn *client.UnixDomainSocket) {
|
||||
conn.Write(server.NewPacketString("Hello~"))
|
||||
})
|
||||
cli.RegUDSConnectionReceivePacketEvent(func(conn *client.UnixDomainSocket, packet server.Packet) {
|
||||
t.Log(packet)
|
||||
close <- struct{}{}
|
||||
})
|
||||
if err := cli.Run(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
})
|
||||
go func() {
|
||||
if err := srv.Run("./test.sock"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
<-close
|
||||
srv.Shutdown()
|
||||
}
|
Loading…
Reference in New Issue