fix: 优化 uds 客户端无法正常接收数据包的问题
This commit is contained in:
parent
3de1f6b9d3
commit
6792e227c0
|
@ -1,7 +1,6 @@
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"github.com/kercylan98/minotaur/server"
|
"github.com/kercylan98/minotaur/server"
|
||||||
"github.com/kercylan98/minotaur/utils/concurrent"
|
"github.com/kercylan98/minotaur/utils/concurrent"
|
||||||
"net"
|
"net"
|
||||||
|
@ -51,13 +50,13 @@ func (slf *UnixDomainSocket) Run() error {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
slf.OnUDSConnectionOpenedEvent(slf)
|
slf.OnUDSConnectionOpenedEvent(slf)
|
||||||
|
packet := make([]byte, 1024)
|
||||||
for slf.packetPool != nil {
|
for slf.packetPool != nil {
|
||||||
reader := bufio.NewReader(slf.conn)
|
n, readErr := slf.conn.Read(packet)
|
||||||
packet, readErr := reader.ReadBytes('\n')
|
|
||||||
if readErr != nil {
|
if readErr != nil {
|
||||||
panic(readErr)
|
panic(readErr)
|
||||||
}
|
}
|
||||||
slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet))
|
slf.OnUDSConnectionReceivePacketEvent(slf, server.NewPacket(packet[:n]))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return nil
|
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