ing
This commit is contained in:
parent
b229204f3e
commit
6a1e7aa3e2
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
@ -1,11 +1,3 @@
|
||||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
// Specifies Lint tool name.
|
||||
"go.lintTool": "gometalinter",
|
||||
|
||||
// Flags to pass to Lint tool (e.g. ["-min_confidence=.8"])
|
||||
"go.lintFlags": [
|
||||
"--config=${workspaceRoot}/golint.json"
|
||||
]
|
||||
|
||||
}
|
@ -17,3 +17,4 @@ import:
|
||||
- package: git.loafle.net/commons_go/util
|
||||
subpackages:
|
||||
- channel
|
||||
- package: git.loafle.net/commons_go/logging
|
||||
|
39
golint.json
39
golint.json
@ -1,39 +0,0 @@
|
||||
{
|
||||
"DisableAll": true,
|
||||
"Enable": [
|
||||
"aligncheck",
|
||||
"deadcode",
|
||||
"dupl",
|
||||
"errcheck",
|
||||
"gas",
|
||||
"goconst",
|
||||
"gocyclo",
|
||||
"gofmt",
|
||||
"goimports",
|
||||
"golint",
|
||||
"gotype",
|
||||
"ineffassign",
|
||||
"interfacer",
|
||||
"lll",
|
||||
"megacheck",
|
||||
"misspell",
|
||||
"structcheck",
|
||||
"test",
|
||||
"testify",
|
||||
"unconvert",
|
||||
"varcheck",
|
||||
"vet",
|
||||
"vetshadow"
|
||||
],
|
||||
"Aggregate": true,
|
||||
"Concurrency": 16,
|
||||
"Cyclo": 60,
|
||||
"Deadline": "60s",
|
||||
"DuplThreshold": 50,
|
||||
"EnableGC": true,
|
||||
"LineLength": 120,
|
||||
"MinConfidence": 0.8,
|
||||
"MinOccurrences": 3,
|
||||
"MinConstLength": 3,
|
||||
"Sort": ["severity"]
|
||||
}
|
@ -1,11 +1,13 @@
|
||||
package jsonrpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"git.loafle.net/commons_go/logging"
|
||||
gws "git.loafle.net/overflow/overflow_gateway_websocket"
|
||||
)
|
||||
|
||||
@ -14,12 +16,16 @@ type MessageHandler interface {
|
||||
}
|
||||
|
||||
type messageHandler struct {
|
||||
o *Options
|
||||
ctx context.Context
|
||||
logger *zap.Logger
|
||||
o *Options
|
||||
}
|
||||
|
||||
func NewHandler(o *Options) MessageHandler {
|
||||
func NewHandler(ctx context.Context, o *Options) MessageHandler {
|
||||
h := &messageHandler{
|
||||
o: o,
|
||||
ctx: ctx,
|
||||
logger: logging.WithContext(ctx),
|
||||
o: o,
|
||||
}
|
||||
|
||||
return h
|
||||
@ -56,7 +62,7 @@ func (h *messageHandler) onRequest(soc gws.Socket, req *ServerRequest) []byte {
|
||||
|
||||
j, err := json.Marshal(res)
|
||||
if nil != err {
|
||||
log.Println(fmt.Errorf("%v", err))
|
||||
h.logger.Error("JSON RPC error", zap.Any("err", err))
|
||||
}
|
||||
|
||||
return j
|
||||
@ -65,6 +71,6 @@ func (h *messageHandler) onRequest(soc gws.Socket, req *ServerRequest) []byte {
|
||||
func (h *messageHandler) onNotify(soc gws.Socket, req *ServerRequest) {
|
||||
err := h.o.OnNotify(soc, req.Method, req.Params)
|
||||
if nil != err {
|
||||
log.Println(fmt.Errorf("%v", err))
|
||||
h.logger.Error("JSON RPC error", zap.Any("err", err))
|
||||
}
|
||||
}
|
||||
|
10
server.go
10
server.go
@ -2,9 +2,11 @@ package overflow_gateway_websocket
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"git.loafle.net/commons_go/logging"
|
||||
channelUtil "git.loafle.net/commons_go/util/channel"
|
||||
"git.loafle.net/overflow/overflow_gateway_websocket/websocket"
|
||||
"github.com/valyala/fasthttp"
|
||||
@ -24,6 +26,7 @@ type Server interface {
|
||||
|
||||
type server struct {
|
||||
_ctx context.Context
|
||||
_logger *zap.Logger
|
||||
_option *ServerOptions
|
||||
_upgrader *websocket.Upgrader
|
||||
_handlers map[string]*SocketOptions
|
||||
@ -34,6 +37,7 @@ type server struct {
|
||||
func NewServer(ctx context.Context, o *ServerOptions) Server {
|
||||
s := &server{
|
||||
_ctx: ctx,
|
||||
_logger: logging.WithContext(ctx),
|
||||
_option: o.Validate(),
|
||||
_handlers: make(map[string]*SocketOptions, 1),
|
||||
_sockets: make(map[string]Socket, 100),
|
||||
@ -94,7 +98,7 @@ func (s *server) onConnection(ctx *fasthttp.RequestCtx) {
|
||||
return
|
||||
}
|
||||
id := s._option.IDGenerator(ctx)
|
||||
soc := NewSocket(id, path, co, conn)
|
||||
soc := NewSocket(s._ctx, id, path, co, conn)
|
||||
s.addSocket(soc)
|
||||
s._option.OnConnection(soc)
|
||||
|
||||
@ -106,7 +110,7 @@ func (s *server) listenHandler() {
|
||||
for {
|
||||
select {
|
||||
case <-s._ctx.Done():
|
||||
log.Println("websocket server: Context Done")
|
||||
s._logger.Info("websocket server: Context Done")
|
||||
return
|
||||
case ca := <-s._socketsCh:
|
||||
switch ca.Type {
|
||||
|
16
socket.go
16
socket.go
@ -1,11 +1,13 @@
|
||||
package overflow_gateway_websocket
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"context"
|
||||
"io"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"git.loafle.net/commons_go/logging"
|
||||
"git.loafle.net/overflow/overflow_gateway_websocket/websocket"
|
||||
)
|
||||
|
||||
@ -18,6 +20,8 @@ type Socket interface {
|
||||
}
|
||||
|
||||
type socket struct {
|
||||
ctx context.Context
|
||||
logger *zap.Logger
|
||||
id string
|
||||
o *SocketOptions
|
||||
conn *websocket.Conn
|
||||
@ -27,8 +31,10 @@ type socket struct {
|
||||
disconnectCh chan bool
|
||||
}
|
||||
|
||||
func NewSocket(id string, path string, o *SocketOptions, conn *websocket.Conn) Socket {
|
||||
func NewSocket(ctx context.Context, id string, path string, o *SocketOptions, conn *websocket.Conn) Socket {
|
||||
c := &socket{
|
||||
ctx: ctx,
|
||||
logger: logging.WithContext(ctx),
|
||||
id: id,
|
||||
o: o,
|
||||
conn: conn,
|
||||
@ -106,12 +112,12 @@ func (soc *socket) listenWrite() {
|
||||
case w := <-soc.writeCh:
|
||||
if writeTimeout := soc.o.WriteTimeout; writeTimeout > 0 {
|
||||
err := soc.conn.SetWriteDeadline(time.Now().Add(writeTimeout))
|
||||
log.Println(fmt.Errorf("%v", err))
|
||||
soc.logger.Error("Socket timeout", zap.Any("err", err))
|
||||
}
|
||||
|
||||
err := soc.conn.WriteMessage(soc.messageType, w)
|
||||
if nil != err {
|
||||
log.Println(fmt.Errorf("%v", err))
|
||||
soc.logger.Error("Socket Write error", zap.Any("err", err))
|
||||
}
|
||||
|
||||
// receive done request
|
||||
|
Loading…
x
Reference in New Issue
Block a user