Example #1
0
        public void AddInterval(int interval)
        {
            var pipeline   = _channel.Pipeline;
            var idleHandle = new IdleStateHandler(0, interval, 0);

            pipeline.AddBefore("device", "idle", idleHandle);
        }
Example #2
0
        public async Task Start()
        {
            var bootstrap = new Bootstrap();
            var workers   = new MultithreadEventLoopGroup();

            try
            {
                bootstrap.Group(workers)
                .Channel <TcpSocketChannel>()
                .Handler(new ActionChannelInitializer <ISocketChannel>(ch =>
                {
                    var pipeline = ch.Pipeline;
                    pipeline.AddLast("split", new FrameSplitDecoder());
                    if (HeartbeatSwitch != null && HeartbeatSwitch)
                    {
                        var idleHandle = new IdleStateHandler(0, Interval, 0);
                        pipeline.AddLast("idle", idleHandle);
                    }
                    pipeline.AddLast("device", Device);
                }));
                var addr     = IPAddress.Parse(Host);
                var endPoint = new IPEndPoint(addr, Port);
                _channel = await bootstrap.ConnectAsync(endPoint);

                Console.WriteLine($"client started, connect to : {endPoint}");
                Console.ReadLine();
            }
            catch (Exception e)
            {
                await Task.WhenAll(workers.ShutdownGracefullyAsync(TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(1)));
            }
        }