最近項目中使用WebSocket建立前后端通訊,是通過SuperSocket.WebSocket實現的,在前端向后端發送請求或者數據的時候,后端報了一個異常:
Max request length: 1024, current processed length: 1790
.
經過摸索,發現是SuperSocket對請求信息的最大長度有所限制,默認請求最大長度為1024. 該配置可以通過一個ServerConfig的對象進行設置,ServerConfig對象中默認配置如下:
//
// Summary:
// Default ReceiveBufferSize
public const int DefaultReceiveBufferSize = 4096;
//
// Summary:
// The default listen backlog
public const int DefaultListenBacklog = 100;
//
// Summary:
// The default keep alive time
public const int DefaultKeepAliveTime = 600;
//
// Summary:
// The default session snapshot interval
public const int DefaultSessionSnapshotInterval = 5;
//
// Summary:
// The default send buffer size
public const int DefaultSendBufferSize = 2048;
//
// Summary:
// Default idle session timeout
public const int DefaultIdleSessionTimeOut = 300;
//
// Summary:
// The default keep alive interval
public const int DefaultKeepAliveInterval = 60;
//
// Summary:
// Default send timeout value, in milliseconds
public const int DefaultSendTimeout = 5000;
//
// Summary:
// Default MaxRequestLength
public const int DefaultMaxRequestLength = 1024;
//
// Summary:
// Default sending queue size
public const int DefaultSendingQueueSize = 5;
//
// Summary:
// Default MaxConnectionNumber
public const int DefaultMaxConnectionNumber = 100;
//
// Summary:
// Default clear idle session interval
public const int DefaultClearIdleSessionInterval = 120;
...
修改這個最大值限制也比較容易,即在websocketServer 創建連接的時候,new一個ServerConfig對象,在serverConfig對象中修改MaxRequestLength即可,實現的代碼如下:
_webSocketServer = new WebSocketServer();
var config = new ServerConfig() {
MaxRequestLength = 1024 * 1024 , // 限制請求的數據長度最大為1M
Ip = WebSocketIp,
Port = WebSocketPort
};
_webSocketServer.Setup(config, logFactory: new WebSocketLogFactory());