modulepackage
0.9.129
Repository: https://github.com/dungntvccorp/gserver.git
Documentation: pkg.go.dev
# README
GServer
là project được xây dựng trên ngôn ngữ go , là Template khung để dựng dự án microservice cung cấp những công cụ cần thiết để tạo một máy chủ đa mục đích và một template thống nhất để handler request , push trên một code duy nhất mà hỗ trợ tất cả loại kết nối phổ biến
Overview
- Hỗ trợ tạo dựng máy chủ GRPC
- Hỗ trợ GRPC Client
- Hỗ trợ tạo dựng máy chủ HTTP/HTTPS ( payload json (application/json) hoặc bin protobuf (application/octet-stream) )
- Hỗ trợ tạo dựng máy chủ HTTP/2 ( payload json (application/json) hoặc bin protobuf (application/octet-stream) )
- Hỗ trợ tạo dựng máy chủ QUIC/3 => inprogress
- Hỗ trợ tạo dựng máy chủ TCP
- Hỗ trợ tạo dựng máy chủ TLS (Hỗ trợ TLS1.2 - TLS1.3)
- Hỗ trợ tạo dựng máy chủ WS (payload json (opCode=text) hoặc bin protobuf (opCode = binary) )
- Hỗ trợ tạo dựng máy chủ WSS
- Hỗ trợ tạo dựng máy chủ UDS (Unix domain socket)
- Hỗ trợ tạo dựng máy chủ UDP
- Hỗ trợ tạo dựng máy chủ DTLS (pre-shared key = 0x86, 0x73, 0x86, 0x65, 0x83 , CipherSuites = TLS_PSK_WITH_AES_256_CCM_8)
Ví dụ để khởi tạo một máy chủ microservice grpc
package main
import (
"fmt"
"github.com/DungntVccorp/grpc_api/api"
"github.com/DungntVccorp/gserver/gBase"
"github.com/DungntVccorp/gserver/gService"
"github.com/DungntVccorp/libinternal/logger"
"os"
)
type EchoServer struct {
logger *logger.Logger
service *gService.Service
}
func NewEchoServer() (*EchoServer, bool) {
_logger, err := logger.New(logger.Level(logger.Info), logger.LogDestinations{logger.DestinationFile: {}, logger.DestinationStdout: {}},"log.log")
if err != nil {
fmt.Printf("Error => %v", err.Error())
return nil, false
}
grpc_config := gBase.DefaultGrpcConfigOption
grpc_config.Addr = ":1234"
p := EchoServer{
service: gService.NewService("Echo Server", _logger, grpc_config),
logger: _logger,
}
p.service.SvName = "Echo Server"
p.service.SetCallBackRequest(p.HanderRequest)
go p.run()
return &p,true
}
func (p *EchoServer) run() {
p.service.Start()
}
func (p *EchoServer) Wait() {
<-p.service.Done
}
func (p *EchoServer) HanderRequest(request *api.Request, reply *api.Reply) uint32 {
reply.Status = uint32(api.ResultType_OK)
reply.Msg = "OK"
return uint32(api.ResultType_OK)
}
func main() {
s,isOK := NewEchoServer()
if !isOK {
os.Exit(99)
}
s.Wait()
}
Ví dụ để khởi tạo một máy chủ http/2
done := make(chan struct{})
chReceiveRequest := make(chan *gBase.Payload)
_logger, _ := logger.New(logger.Info, logger.LogDestinations{logger.DestinationFile: {}, logger.DestinationStdout: {}}, "/tmp/server.log")
cf := gBase.DefaultHttp2ConfigOption
cf.Logger = _logger
cf.Tls.Cert = "./certificate.pem"
cf.Tls.Key = "./private.key"
cf.Done = &done
hsv2 := gHTTP.New(cf,chReceiveRequest)
hsv2.Serve()
Ví dụ để khởi tạo một máy chủ Socket (tcp,udp,ws)
done := make(chan struct{})
chReceiveRequest := make(chan *gBase.Payload)
_logger, _ := logger.New(logger.Info, logger.LogDestinations{logger.DestinationFile: {}, logger.DestinationStdout: {}}, "/tmp/server.log")
cf := gBase.DefaultDTLSSocketConfigOption
cf.Logger = _logger
cf.Tls.Cert = "./certificate.pem"
cf.Tls.Key = "./private.key"
cf.Done = &done
sv := gDTLS.New(cf,chReceiveRequest)
sv.Serve()
Ví dụ để khởi tạo một máy chủ Socket DTLS
done := make(chan struct{})
chReceiveRequest := make(chan *gBase.Payload)
_logger, _ := logger.New(logger.Info, logger.LogDestinations{logger.DestinationFile: {}, logger.DestinationStdout: {}}, "/tmp/server.log")
cf_dtls := gBase.DefaultDTLSSocketConfigOption
cf_dtls.EncodeType = gBase.Encryption_AES
cf_dtls.Logger = _logger
cf_dtls.Done = &done
dtls := gDTLS.New(cf_dtls,chReceiveRequest)
dtls.Serve()
Ví dụ để khởi tạo một máy chủ Socket TLS
done := make(chan struct{})
chReceiveRequest := make(chan *gBase.Payload)
_logger, _ := logger.New(logger.Info, logger.LogDestinations{logger.DestinationFile: {}, logger.DestinationStdout: {}}, "/tmp/server.log")
cf_tls := gBase.DefaultTlsSocketConfigOption
cf_tls.Tls.Cert = "/Users/dungnt/Desktop/vivas/certificate.pem"
cf_tls.Tls.Key = "/Users/dungnt/Desktop/vivas/private.key"
cf_tls.Done = &done
cf_tls.EncodeType = gBase.Encryption_AES
cf_tls.Logger = _logger
tls_sv := gTLS.New(cf_tls,chReceiveRequest)
tls_sv.Serve()
# Packages
No description provided by the author
.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
.
No description provided by the author
No description provided by the author