diff --git a/README.md b/README.md index e3744866893af86d6e2bbb6917070090b6f34d80..d2bbd08c1487db2146b45766b578b91e5c552a02 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 7fdd1eb64fa37ff1493f734521048e5400cfcd6a..2e9a49996aff7a70e3b0906ad5b9cffac9845f19 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 0faa65726b1412a4b780459f4684ab3cd10bd4e3..bd84d4766feb99d6ce55051fcf17a90a788d945a 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 78563f6ca05751deb5ad4b7f4283db316e380154..bf3ddef9548ff62cf3622b7af183721b196e7fa1 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 75d13683a485161a10113e9759b1505922a68cac..c83291127723913f671976911a423f53f903a1da 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 }