From 42e77391bf4224c7eb5a8f88e690781b36b3b41d Mon Sep 17 00:00:00 2001 From: Androlo <andreas@erisindustries.com> Date: Wed, 19 Aug 2015 17:15:06 +0100 Subject: [PATCH] temp disable ping/pong for ws and up buffer size to default --- README.md | 4 ++-- erisdb/serve.go | 2 +- server/config.go | 4 ++-- server/websocket.go | 43 ++++++++++++------------------------ test/server/ws_burst_test.go | 4 ++-- 5 files changed, 21 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index e3744866..d2bbd08c 100644 --- a/README.md +++ b/README.md @@ -144,8 +144,8 @@ json_rpc_endpoint="/rpc" [web_socket] websocket_endpoint="/socketrpc" max_websocket_sessions=50 -read_buffer_size = 2048 -write_buffer_size = 2048 +read_buffer_size = 4096 +write_buffer_size = 4096 [logging] console_log_level="info" file_log_level="warn" diff --git a/erisdb/serve.go b/erisdb/serve.go index 7fdd1eb6..2e9a4999 100644 --- a/erisdb/serve.go +++ b/erisdb/serve.go @@ -14,7 +14,7 @@ import ( "path" ) -const ERISDB_VERSION = "0.11.2" +const ERISDB_VERSION = "0.11.3" const TENDERMINT_VERSION = "0.5.0" var log = log15.New("module", "eris/erisdb_server") diff --git a/server/config.go b/server/config.go index 0faa6572..bd84d476 100644 --- a/server/config.go +++ b/server/config.go @@ -73,8 +73,8 @@ func DefaultServerConfig() *ServerConfig { WebSocket: WebSocket{ WebSocketEndpoint: "/socketrpc", MaxWebSocketSessions: 50, - ReadBufferSize: 2048, - WriteBufferSize: 2048, + ReadBufferSize: 4096, + WriteBufferSize: 4096, }, Logging: Logging{ ConsoleLogLevel: "info", diff --git a/server/websocket.go b/server/websocket.go index 78563f6c..bf3ddef9 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -13,18 +13,14 @@ import ( // to net in connections/session management. At some point... const ( - // Size of read channel. - readChanBufferSize = 10 - // Size of write channel. - writeChanBufferSize = 10 // Time allowed to write a message to the peer. - writeWait = 10 * time.Second + writeWait = 0 * time.Second // Time allowed to read the next pong message from the peer. - pongWait = 10 * time.Second + pongWait = 0 * time.Second // Send pings to peer with this period. Must be less than pongWait. - pingPeriod = (pongWait * 9) / 10 + pingPeriod = 0 * time.Second // Maximum message size allowed from a peer. - maxMessageSize = 2048 + maxMessageSize = 4096 ) // Services requests. Message bytes are passed along with the session @@ -213,8 +209,8 @@ func (this *WSSession) readPump() { }() */ this.wsConn.SetReadLimit(maxMessageSize) - this.wsConn.SetReadDeadline(time.Now().Add(pongWait)) - this.wsConn.SetPongHandler(func(string) error { this.wsConn.SetReadDeadline(time.Now().Add(pongWait)); return nil }) + // this.wsConn.SetReadDeadline(time.Now().Add(pongWait)) + // this.wsConn.SetPongHandler(func(string) error { this.wsConn.SetReadDeadline(time.Now().Add(pongWait)); return nil }) for { // Read @@ -227,23 +223,9 @@ func (this *WSSession) readPump() { this.writeCloseChan <- struct{}{} return } - // Wrong message type. + if msgType != websocket.TextMessage { - var typeStr string - if msgType == websocket.BinaryMessage { - typeStr = "Binary" - } else if msgType == websocket.CloseMessage { - typeStr = "Close" - } else if msgType == websocket.PingMessage { - typeStr = "Ping" - } else if msgType == websocket.PingMessage { - typeStr = "Pong" - } else { - // This should not be possible. - typeStr = "Unknown ID: " + fmt.Sprintf("%d", msgType) - } - - log.Info("Receiving non text-message from client, closing.", "type", typeStr) + log.Info("Receiving non text-message from client, closing.") this.writeCloseChan <- struct{}{} return } @@ -268,10 +250,10 @@ func (this *WSSession) writePump() { wpm.Unlock() }() */ - ticker := time.NewTicker(pingPeriod) + // ticker := time.NewTicker(pingPeriod) defer func() { - ticker.Stop() + // ticker.Stop() this.Close() }() @@ -291,12 +273,15 @@ func (this *WSSession) writePump() { case <-this.writeCloseChan: return // Ticker run out. Time for another ping message. + /* case <-ticker.C: if err := this.write(websocket.PingMessage, []byte{}); err != nil { log.Debug("Failed to write ping message to socket. Closing.") return } + */ } + } } @@ -402,7 +387,7 @@ func (this *SessionManager) createSession(wsConn *websocket.Conn) (*WSSession, e sessionManager: this, id: newId, wsConn: wsConn, - writeChan: make(chan []byte, writeChanBufferSize), + writeChan: make(chan []byte, maxMessageSize), writeCloseChan: make(chan struct{}), service: this.service, } diff --git a/test/server/ws_burst_test.go b/test/server/ws_burst_test.go index 75d13683..c8329112 100644 --- a/test/server/ws_burst_test.go +++ b/test/server/ws_burst_test.go @@ -5,7 +5,7 @@ import ( "github.com/eris-ltd/eris-db/client" "github.com/eris-ltd/eris-db/server" "testing" - "time" + // "time" ) const CONNS = 100 @@ -103,6 +103,6 @@ func wsClient(doneChan chan bool, errChan chan error) { } client.Close() - time.Sleep(time.Millisecond * 100) + doneChan <- true } -- GitLab