コード例 #1
0
ファイル: ClientEtiquette.cs プロジェクト: RonaldV/hyperion
        //public ClientEtiquette(Uri remoteUri, string origin, HttpCookieCollection cookies, IDictionary<string, string> extraFields)
        //    : this(remoteUri, origin)
        //{
        //    this.cookies = cookies;
        //    this.extraFields = extraFields;
        //}

        public void GiveHandshake(IWebSocket webSocket, Action handShakenCallback)
        {
            if (webSocket == null || !webSocket.IsConnected || handShakenCallback == null)
            {
                return;
            }

            var resourceName = uri.PathAndQuery;
            var host         = uri.WebSocketAuthority();
            var handshake    = new ClientHandshake(resourceName, host, origin)
            {
                ExtraFields = extraFields,
                Cookies     = cookies
            };
            var state = new GiveHandshakeState
            {
                WebSocket = webSocket,
                Callback  = handShakenCallback,
                Handshake = handshake
            };
            var handshakeBuffer = handshake.ToByteArray();

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