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; }
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); }
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); }
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); }
internal virtual ITransport CreateTransport(TransportParams transportParams) { return(Defaults.TransportFactories["web_socket"].CreateTransport(transportParams)); }