fix: 优化 uds 客户端无法正常接收数据包的问题

This commit is contained in:
kercylan98 2023-08-22 15:34:10 +08:00
parent 3de1f6b9d3
commit 6792e227c0
3 changed files with 42 additions and 4 deletions

View File

@ -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

39
server/client/uds_test.go Normal file
View File

@ -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()
}