BeetleX小试牛刀

BeetleX-轻量级高性能 TCP 通讯组件

1、用.net core 实现tcp 协议通讯,利用开源组件BeetleX搭建Demo.

2、收到消息后用Reids 接收。

3、用Redis 写监听程序,把接收到的消息,打印出来。

 1 using BeetleX;
 2 using BeetleX.EventArgs;
 3 using BeetleX.Redis;
 4 
 5 /// <summary>
 6 /// 服务器端
 7 /// </summary>
 8 class Program: ServerHandlerBase
 9 {
10     private static BeetleX.IServer mServer;
11   
12 
13     static void Main(string[] args)
14     {
15 
16 
17         mServer = SocketFactory.CreateTcpServer<Program>();
18         mServer.Open();
19 
20         #region redis init
21         DefaultRedis.Instance.DataFormater = new JsonFormater();
22         DefaultRedis.Instance.Host.AddWriteHost("127.0.0.1");
23         #endregion
24 
25         Console.WriteLine(mServer.Status);
26         Console.Read();
27     }
28 
29     protected override void OnLogToConsole(IServer server, ServerLogEventArgs e)
30     {
31 
32         Console.WriteLine($"{DateTime.Now}\t{e.Type}\t{e.Session?.RemoteEndPoint} {e.Message}");
33     }
34     public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
35     {
36         base.SessionReceive(server, e);
37         var stream = e.Stream.ToPipeStream();
38         if (stream.TryReadLine(out string line))
39         {
40             Console.WriteLine(line);
41             var now = DateTime.Now;
42             stream.WriteLine($"{now}");
43 
44             //RedisSet(now.ToString(),line);
45             DefaultRedis.Publish("emps", line);
46 
47             e.Stream.Flush();
48         }
49     }
50 
51     //private void RedisSet(string key,string msg)
52     //{
53     //    DefaultRedis.Set(key, msg);
54     //}
55 }
View Code
 1 //客户端代码
 2 using BeetleX;
 3 using BeetleX.Clients;
 4 
 5 
 6 var client = SocketFactory.CreateClient<AsyncTcpClient>("localhost", 9090);
 7 client.Connect();
 8 var stream = client.Stream.ToPipeStream();
 9 while (true)
10 {
11     string? value = Console.ReadLine();
12     stream.WriteLine($"{DateTime.Now} {value}");
13     client.Stream.Flush();
14     if (stream.TryReadLine(out string line))
15     {
16         Console.WriteLine(line);
17     }
18 }
View Code
 1 //监听端代码
 2 using BeetleX.Redis;
 3 
 4 DefaultRedis.Instance.DataFormater = new JsonFormater();
 5 DefaultRedis.Instance.Host.AddWriteHost("127.0.0.1");
 6 var subscribe = DefaultRedis.Subscribe();
 7 subscribe.Register<string>("emps", e =>
 8 {
 9     Console.WriteLine($"Receive  {e}");
10 });
11 subscribe.Listen();
12 
13 Console.ReadKey();
View Code

 

posted @ 2022-07-30 10:41  烈火寒冰  阅读(18)  评论(0)    收藏  举报