public static IWampBindingHost CreateHost <TMessage>
            (this IWampBinding <TMessage> binding,
            IWampHostedRealmContainer realmContainer,
            IWampConnectionListener <TMessage> connectionListener,
            IWampUriValidator uriValidator)
        {
            IWampRouterBinding <TMessage> routerBinding = binding as IWampRouterBinding <TMessage>;

            if (routerBinding != null)
            {
                return(routerBinding.CreateHost(realmContainer, connectionListener));
            }
            else
            {
                IWampRouterBuilder routerBuilder = new WampRouterBuilder(uriValidator);

                WampBindingHost <TMessage> result =
                    new WampBindingHost <TMessage>(realmContainer,
                                                   routerBuilder,
                                                   connectionListener,
                                                   binding);

                return(result);
            }
        }
        public static IWampBindingHost CreateHost <TMessage>
            (this IWampBinding <TMessage> binding,
            IWampHostedRealmContainer realmContainer,
            IWampConnectionListener <TMessage> connectionListener,
            IWampUriValidator uriValidator,
            IWampSessionMapper sessionIdMap)
        {
            if (binding is IWampRouterBinding <TMessage> routerBinding)
            {
                return(routerBinding.CreateHost(realmContainer, connectionListener, sessionIdMap));
            }
            else
            {
                IWampRouterBuilder routerBuilder = new WampRouterBuilder(uriValidator);

                WampBindingHost <TMessage> result =
                    new WampBindingHost <TMessage>(realmContainer,
                                                   routerBuilder,
                                                   connectionListener,
                                                   binding,
                                                   sessionIdMap);

                return(result);
            }
        }