Example #1
0
        /// <summary>
        /// Application start.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_Start(object sender, EventArgs e)
        {
            Global.Clients            = new ConcurrentDictionary <WebSocketClient, WebSocket>();
            Global.ServerID           = Guid.NewGuid().ToString();
            Global.Timeout            = new TimeoutHandler();
            Global.TimeoutCancelToken = new CancellationTokenSource();
            Global.Timeout.Start(Global.TimeoutCancelToken.Token);

            Global.AccessTokenVerifyURL         = WebRTCSocket.Properties.Settings.Default.AccessTokenVerifyURL;
            Global.ClientLocationRequestURL     = WebRTCSocket.Properties.Settings.Default.ClientLocationRequestURL;
            Global.ClientLocationRequestEnabled = WebRTCSocket.Properties.Settings.Default.ClientLocationRequestEnabled;
            Global.UdpBroadcastEnabled          = WebRTCSocket.Properties.Settings.Default.UdpBroadcastEnabled;
            Global.UdpBroadcastPort             = WebRTCSocket.Properties.Settings.Default.UdpBroadcastPort;
            Global.UdpBroadcastAddress          = WebRTCSocket.Properties.Settings.Default.UdpBroadcastAddress;
            Global.UdpBroadcastMask             = WebRTCSocket.Properties.Settings.Default.UdpBroadcastMask;
            Global.UdpBroadcastCallbackPort     = WebRTCSocket.Properties.Settings.Default.UdpBroadcastCallbackPort;
            Global.ClientTimeoutConnect         = WebRTCSocket.Properties.Settings.Default.ClientTimeoutConnect;

            // UDP socket handler.
            Global.UdpSocket = new UdpSocketHandler(Global.UdpBroadcastEnabled, (int)Global.UdpBroadcastPort, (int)Global.UdpBroadcastCallbackPort);

            // If UDP broadcast is enabled.
            if (Global.UdpBroadcastEnabled && Global.UdpBroadcastPort > 0 && Global.UdpBroadcastCallbackPort > 0)
            {
                // Start the UDP handler.
                Global.UdpHandlerCancelToken = new CancellationTokenSource();
                Global.UdpSocket.Start(Global.UdpHandlerCancelToken.Token);
            }
        }
Example #2
0
        /// <summary>
        /// Application end.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_End(object sender, EventArgs e)
        {
            if (Global.Clients != null)
            {
                try
                {
                    // Stop the timeout handler.
                    Global.Timeout.Stop(Global.TimeoutCancelToken);
                }
                catch { }

                try
                {
                    // Stop the UDP broadcast handler.
                    Global.UdpSocket.Stop(Global.UdpHandlerCancelToken);
                }
                catch { }

                // For each client.
                foreach (var client in Global.Clients)
                {
                    try
                    {
                        // Close the connection.
                        client.Value.Abort();
                    }
                    catch { }
                }

                try
                {
                    Global.Clients.Clear();
                }
                catch { }
            }
            Global.Clients   = null;
            Global.ServerID  = null;
            Global.Timeout   = null;
            Global.UdpSocket = null;
        }