コード例 #1
0
        public void ConnectAsync(MqttConnectMessageBuilder bldr, string ipOrHost, int port, SocketEncryption encryption, object eventData)
        {
            var args = new SocketEventArgs
            {
                EncryptionLevel = encryption,
                ClientUid       = GenerateClientUid(bldr)
            };

            args.OnOperationComplete((eventArgs) =>
            {
                OnTcpConnectAsyncCompleted(eventArgs, eventData);

                if (eventArgs.SocketException == null)
                {
                    SendMessageAsync(bldr, eventData, eventArgs.ClientUid);
                }
                else
                {
                    FireConnectComplete(new MqttNetEventArgs
                    {
                        Message             = bldr.GetMessage(),
                        Exception           = eventArgs.SocketException,
                        AdditionalErrorInfo = eventArgs.AdditionalErrorInfo,
                        EventData           = eventData,
                        ClientUid           = args.ClientUid
                    });
                }
            });

            Socket.ConnectAsync(ipOrHost, port, args);
        }
コード例 #2
0
        /// <inheritdoc cref="ConnectAsync"/>
        public Task ConnectAsync(ISession session, bool appearOnline = false,
                                 int connectTimeoutSec = DefaultConnectTimeout, string langTag = "en")
        {
            var uri = new UriBuilder(_baseUri)
            {
                Path  = "/ws",
                Query = $"lang={langTag}&status={appearOnline}&token={session.AuthToken}"
            }.Uri;

            return(_adapter.ConnectAsync(uri, connectTimeoutSec));
        }