コード例 #1
0
        // 1、Content negotiation
        private WSNegotiation Negotiate()
        {
            WSNegotiation negotiation = new WSNegotiation();

            IRestRequest request = new RestRequest("signalr/negotiate", Method.GET);

            string connectionDatasJson = JsonConvert.SerializeObject(this.ConnectionData);

            request.AddQueryParameter("connectionData", connectionDatasJson);
            request.AddQueryParameter("clientProtocol", "2.1");

            IRestResponse response = restClient.Execute(request);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                if (!string.IsNullOrEmpty(response.Content))
                {
                    negotiation = JsonConvert.DeserializeObject <WSNegotiation>(response.Content);
                }
            }

            this.WSNegotiation = negotiation;

            return(negotiation);
        }
コード例 #2
0
        /// <summary>
        /// Connect to the server
        /// </summary>
        public void Open()
        {
            WSNegotiation negotiation = this.Negotiate();

            if (!string.IsNullOrEmpty(negotiation.ConnectionToken))
            {
                this.Connect(negotiation);
            }
            else
            {
                this.StartConnectTimer();
            }
        }
コード例 #3
0
        // 2、Create websocket connection
        private void Connect(WSNegotiation negotiation)
        {
            string token = HttpUtility.UrlEncode(negotiation.ConnectionToken);
            string connectionDatasJson = JsonConvert.SerializeObject(this.ConnectionData);
            string path = string.Format(@"{0}/signalr/connect?transport=webSockets&clientProtocol={1}&connectionToken={2}&connectionData={3}",
                                        this.WebSocketBaseUrl, negotiation.ProtocolVersion, token, connectionDatasJson);

            webSocket                  = new WebSocket(path);
            webSocket.Opened          += WebSocket_Opened;
            webSocket.Closed          += WebSocket_Closed;
            webSocket.MessageReceived += WebSocket_MessageReceived;
            webSocket.Open();
        }