예제 #1
0
        /// <summary>
        /// Receive handshake from the connected socket
        /// </summary>
        /// <param name="webSocket">The connected socket</param>
        /// <param name="handShakenCallback">Callback when the handshake was successful</param>
        public void ReceiveHandshake(IWebSocket webSocket, Action <IWebSocket, ClientHandshake> handShakenCallback)
        {
            if (webSocket == null || !webSocket.IsConnected || handShakenCallback == null)
            {
                return;
            }

            var state = new ReceiveHandshakeState
            {
                WebSocket = webSocket,
                Callback  = handShakenCallback
            };

            webSocket.BeginReceive(state.Buffer, 0, state.Buffer.Length, OnReceivingHandshake, state);
        }
예제 #2
0
        private void ReturnHandshake(ServerHandshake serverHandshake, ClientHandshake clientHandshake, ReceiveHandshakeState handshakeState)
        {
            var webSocket = handshakeState.WebSocket;
            var state     = new ReturnHandshakeState {
                WebSocket = webSocket, Callback = handshakeState.Callback, ClientHandshake = clientHandshake
            };
            var handshakeBuffer = serverHandshake.ToByteArray();

            webSocket.BeginSend(handshakeBuffer, 0, handshakeBuffer.Length, OnHandshakeReturned, state);
        }