コード例 #1
0
        private void HandleClientHandshakeReceived(IAsyncResult ar)
        {
            var handshakeStateContainer = (HandshakeStateContainer)ar.AsyncState;

            handshakeStateContainer.AsyncResult.HandleNewCompletedSynchronousValue(ar.CompletedSynchronously);

            try
            {
                clientHandshake = handshakeStateContainer.HandshakeReceiver.EndReceiveHandshake(ar);
                handshakeStateContainer.ClientHandshake = clientHandshake;

                if (!IsValidOrigin(clientHandshake.Origin))
                {
                    // Send Forbidden 403
                    handshakeStateContainer.HandshakeReceiver.Socket.Close();
                }
                else if (!IsValidVersion(clientHandshake.Version))
                {
                    // Send Upgrade Required 426
                    handshakeStateContainer.HandshakeReceiver.Socket.Close();
                }
                else
                {
                    var serverHandshakeSender = new ServerHandshakeSender(handshakeStateContainer.HandshakeReceiver.Socket);
                    handshakeStateContainer.HandshakeSender = serverHandshakeSender;
                    serverHandshakeSender.BeginSendHandshake(new ServerHandshake(clientHandshake.Key), HandleServerHandshakeSent, handshakeStateContainer);
                }
            }
            catch (Exception ex)
            {
                // Send Bad Request 400
                handshakeStateContainer.AsyncResult.SetCompleted(ex);
            }
        }
コード例 #2
0
ファイル: WebSocket.cs プロジェクト: Cooke/DotNetWebSocket
        internal WebSocket(Socket socket, ClientHandshake clientHandshake)
        {
            this.socket = socket;
            receiveBuffer = new byte[10 * 1024];
            outputBuffer = new byte[10 * 1024];
            receiveBufferOffset = 0;
            sendBufferOffset = 0;
            sendBufferSize = 0;

            request = new Request(clientHandshake.Resource, clientHandshake.Cookies, clientHandshake.AllFields);
        }