Beispiel #1
0
        void IConnectionContext.CreateTransport(bool useFallbackHost)
        {
            if (this.transport != null)
            {
                (this as IConnectionContext).DestroyTransport();
            }

            TransportParams transportParams = CreateTransportParameters(useFallbackHost);

            this.transport          = CreateTransport(transportParams);
            this.transport.Listener = this;
        }
Beispiel #2
0
        internal static TransportParams CreateTransportParameters(AblyRealtimeOptions options, Connection connection, bool useFallbackHost)
        {
            TransportParams transportParams = new TransportParams(options);

            transportParams.Host          = GetHost(options, useFallbackHost);
            transportParams.Port          = options.Tls ? Defaults.TlsPort : Transport.Defaults.Port;
            transportParams.FallbackHosts = Defaults.FallbackHosts;
            if (connection != null)
            {
                transportParams.ConnectionKey    = connection.Key;
                transportParams.ConnectionSerial = connection.Serial.ToString();
            }
            return(transportParams);
        }
Beispiel #3
0
        private static WebSocket CreateSocket(TransportParams parameters)
        {
            bool   isTls           = parameters.Options.Tls;
            string wsScheme        = isTls ? "wss://" : "ws://";
            var    queryCollection = System.Web.HttpUtility.ParseQueryString("");

            parameters.StoreParams(queryCollection);

            UriBuilder uriBuilder = new UriBuilder(wsScheme, parameters.Host, parameters.Port);

            uriBuilder.Query = queryCollection.ToString();

            WebSocket socket = new WebSocket(uriBuilder.ToString(), "", WebSocketVersion.Rfc6455);

            return(socket);
        }
Beispiel #4
0
            public ITransport CreateTransport(TransportParams parameters)
            {
                IMessageSerializer serializer = null;

                if (parameters.Options.UseBinaryProtocol)
                {
                    serializer = new MsgPackMessageSerializer();
                }
                else
                {
                    serializer = new JsonMessageSerializer();
                }
                WebSocketTransport socketTransport = new WebSocketTransport(serializer);

                socketTransport.Host = parameters.Host;
                socketTransport.channelBinaryMode       = parameters.Options.UseBinaryProtocol;
                socketTransport.socket                  = CreateSocket(parameters);
                socketTransport.socket.Opened          += socketTransport.socket_Opened;
                socketTransport.socket.Closed          += socketTransport.socket_Closed;
                socketTransport.socket.Error           += socketTransport.socket_Error;
                socketTransport.socket.MessageReceived += socketTransport.socket_MessageReceived;
                socketTransport.socket.DataReceived    += socketTransport.socket_DataReceived;
                return(socketTransport);
            }
Beispiel #5
0
 internal virtual ITransport CreateTransport(TransportParams transportParams)
 {
     return(Defaults.TransportFactories["web_socket"].CreateTransport(transportParams));
 }