代码之家  ›  专栏  ›  技术社区  ›  Matt Miguel Pragier

WebSocket。CreateServerBuffer与WebSocket。CreateClientBuffer

  •  2
  • Matt Miguel Pragier  · 技术社区  · 8 年前

    WebSocket.CreateServerBuffer 和 WebSocket.CreateClientBuffer ,以及何时使用。

    有人能解释一下什么时候/如何使用它们吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Svek    8 年前

    用法

    WebSocket.CreateClientBuffer 主要用 ConnectAsync() 方法的实例 ClientWebSocket .

    ClientWebSocket clientWS = new ClientWebSocket();
    await clientWS.ConnectAsync(...);  // will create the client buffer
    

    本质上唯一的区别是 CreateClientBuffer 允许您定义 sendBufferSize ,鉴于 CreateServerBuffer 不会(并且将默认 发送缓冲区大小 至16)。

    似乎它们的存在主要是为了将关注点与 客户端WebSocket ServerWebSocket 它们都只是从抽象类派生的实例 WebSocket .


    其他详细信息

    看看 WebSocket.cs at Microsoft Reference Source 要查看实施情况:

    // [WebSocketBuffer.cs] const int MinSendBufferSize = 16;
    
    public static ArraySegment<byte> CreateClientBuffer(int receiveBufferSize, int sendBufferSize)
    {
        WebSocketHelpers.ValidateBufferSizes(receiveBufferSize, sendBufferSize);
    
        return WebSocketBuffer.CreateInternalBufferArraySegment(receiveBufferSize, sendBufferSize, false);
    }
    
    public static ArraySegment<byte> CreateServerBuffer(int receiveBufferSize)
    {
        WebSocketHelpers.ValidateBufferSizes(receiveBufferSize, WebSocketBuffer.MinSendBufferSize);
    
        return WebSocketBuffer.CreateInternalBufferArraySegment(receiveBufferSize, WebSocketBuffer.MinSendBufferSize, true);
    }
    

    WebSocketBuffer 但通过不同的最小值 发送缓冲区大小

    这个 CreateServerBuffer() 方法将始终使用 MinSendBufferSize = 16 . 否则 CreateClientBuffer() 使用传递的值。