tcp_connector.go 847 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package plugin_manager
  2. import (
  3. "fmt"
  4. "github.com/panjf2000/gnet/v2"
  5. )
  6. type difyServer struct {
  7. gnet.BuiltinEventEngine
  8. eng gnet.Engine
  9. addr string
  10. multicore bool
  11. }
  12. func (s *difyServer) OnOpen(c gnet.Conn) (out []byte, action gnet.Action) {
  13. c.SetContext(&codec{})
  14. return nil, gnet.None
  15. }
  16. func (s *difyServer) OnBoot(c gnet.Engine) (action gnet.Action) {
  17. return gnet.None
  18. }
  19. func (s *difyServer) OnTraffic(c gnet.Conn) (action gnet.Action) {
  20. codec := c.Context().(*codec)
  21. messages, err := codec.Decode(c)
  22. if err != nil {
  23. return gnet.Close
  24. }
  25. for _, message := range messages {
  26. fmt.Println(message)
  27. }
  28. return gnet.None
  29. }
  30. func traffic() {
  31. addr := "tcp://:9000"
  32. multicore := true
  33. s := &difyServer{addr: addr, multicore: multicore}
  34. gnet.Run(s, addr, gnet.WithMulticore(multicore), gnet.WithNumEventLoop(8))
  35. }