WebSocket(SuperSocket.WebSocket實現)中字符串長度限制問題解決


最近項目中使用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());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM