Categorygithub.com/DungntVccorp/gserver
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