c# websocket通信

socket连接,以及通过Timer来实现每隔一分钟连接检测

    public class TouchWebSocket
    {
        /// <summary>
        /// 消息到达事件
        /// </summary>
        public static event EventHandler<SocketMessage> MessageReceivedEvent;

        static TouchSocket.Http.WebSockets.WebSocketClient myWSClient = new TouchSocket.Http.WebSockets.WebSocketClient();

        public static System.Timers.Timer timer = new System.Timers.Timer(60000);

        static TouchWebSocket()
        {
            timer.Elapsed += Timer_Elapsed;
        }

        private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //连接
        }

        public static async Task ConnectAsync(string url)
        {
            await Task.Run(() =>
             {
                 try
                 {
                     if (myWSClient.Online)
                     {
                         myWSClient.Close();
                     }
                     if (myWSClient.Connected == null)
                     {
                         myWSClient.Connected = (client, me) =>
                         {
                            
                         };//成功连接到服务器
                     }
                     if (myWSClient.Disconnected == null)
                     {
                         myWSClient.Disconnected = (client, me) =>
                         {
                            
                         };//从服务器断开连接,当连接不成功时不会触发。
                     }
                     if (myWSClient.Received == null)
                     {
                         myWSClient.Received = (client, byteBlock) =>
                         {
                             //从服务器收到信息
                             string socketStr = Encoding.UTF8.GetString(byteBlock.PayloadData.Buffer, 0, byteBlock.PayloadData.Len);
                           
                             SocketMessage socketMessage = JsonConvert.DeserializeObject<SocketMessage>(socketStr);
                             MessageReceivedEvent?.BeginInvoke(null, socketMessage, null, null);
                         };
                     }
                     myWSClient.Setup(new TouchSocket.Core.TouchSocketConfig()
                         .SetRemoteIPHost(new TouchSocket.Sockets.IPHost(url))
                         )
                         .Connect();
                 }
                 catch (Exception ex)
                 {
                 }
             });

        }

        public static async Task CloseAsync()
        {
            await Task.Run(() =>
            {
                try
                {
                    if (myWSClient.Online)
                    {
                        myWSClient.Close();
                    }
                }
                catch (Exception ex)
                {
                   
                }
            });
        }

        public static bool IsConnected
        {
            get
            {
                if (myWSClient != null)
                {

                    return myWSClient.Online;
                }
                return false;
            }
        }


    }

连接

 Task.Run(async () =>
                {
                    if (!TouchWebSocket.IsConnected)
                    {
                        await TouchWebSocket.ConnectAsync(wsUrl);
                       
                        if (TouchWebSocket.IsConnected)
                        {
                            if (!TouchWebSocket.timer.Enabled)
                            {
                                TouchWebSocket.timer.Start();
                            }
                        }
                    }
                });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_40506952

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值