public async Task ReceiveMessagesUntilCloseAsync()
        {
            byte[] receivePayloadBuffer = new byte[_receivePayloadBufferSize];
            WebSocketReceiveResult webSocketReceiveResult =
                await _webSocket.ReceiveAsync(new ArraySegment <byte>(receivePayloadBuffer),
                                              CancellationToken.None);

            while (webSocketReceiveResult.MessageType != WebSocketMessageType.Close)
            {
                if (webSocketReceiveResult.MessageType == WebSocketMessageType.Binary)
                {
                    byte[] webSocketMessage = await ReceiveMessagePayloadAsync(_webSocket, webSocketReceiveResult,
                                                                               receivePayloadBuffer);

                    ReceiveBinary?.Invoke(this, webSocketMessage);
                }
                else
                {
                    byte[] webSocketMessage = await ReceiveMessagePayloadAsync(_webSocket, webSocketReceiveResult,
                                                                               receivePayloadBuffer);

                    ReceiveText?.Invoke(this, Encoding.UTF8.GetString(webSocketMessage));
                }

                webSocketReceiveResult =
                    await _webSocket.ReceiveAsync(new ArraySegment <byte>(receivePayloadBuffer),
                                                  CancellationToken.None);
            }

            CloseStatus            = webSocketReceiveResult.CloseStatus.Value;
            CloseStatusDescription = webSocketReceiveResult.CloseStatusDescription;
        }
예제 #2
0
    public IEnumerator DownloadBinary(int id, string url, ReceiveBinary getInfo)
    {
        WWW www = new WWW(url);

        yield return(www);

        if (www.error == null)
        {
            getInfo(id, www.bytes);
        }
        else
        {
            Debug.Log("Cannot download image from: " + url);
        }
    }
 private void OnReceiveBinary(byte[] webSocketMessage)
 {
     ReceiveBinary?.Invoke(this, webSocketMessage);
 }