Skip to content

SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服…

License

avanlau/SAEA

 
 

Repository files navigation

Logo SAEA.Socket

NuGet version (Newtonsoft.Json)

SAEA.Socket is an IOCP high-performance TCP network framework based on dotnet standard 2.0; Src contains its application scenarios, such as large file transfer, websocket client and server, high-performance message queue, rpc, redis driver, httpserver, Mvc, single-machine million-connected high-performance message server, etc.
Reference components that search for saea in nuget, or enter the command Install-Package SAEA.Sockets-Version 3.3.3.5 directly

SAEA.Socket是一个IOCP高性能tcp网络框架,基于dotnet standard 2.0;Src中含有其应用场景,例如大文件传输、websocket client and server、高性能消息队列、rpc、redis驱动、httpserver、Mvc、单机百万连接高性能消息服务器等

  • IOCP
  • FileTransfer
  • MessageSocket
  • QueueSocket
  • MVC
  • RPC
  • Websocket
  • RedisDrive

Reference component

引用组件,可以在nuget中搜索saea,或者直接输入命令

Install-Package SAEA.Sockets -Version 3.3.3.5

nuget url: https://www.nuget.org/packages?q=saea


Example

FileTransfer

saea.filesocket usage

var fileTransfer = new FileTransfer(filePath);
fileTransfer.OnReceiveEnd += _fileTransfer_OnReceiveEnd;
fileTransfer.OnDisplay += _fileTransfer_OnDisplay;
//send file
fileTransfer.SendFile(string fileName, string ip)

QueueTest

saea.queue server usage

var server = new QServer();
server.Start();

saea.queue producer usage

var ipPort = "127.0.0.1:39654";
QClient producer = new QClient("productor_" + Guid.NewGuid().ToString("N"), ipPort);
producer.OnError += Producer_OnError;
producer.OnDisconnected += Client_OnDisconnected;
producer.Connect();
producer.Publish(topic, msg);

saea.queue consumer usage

var ipPort = "127.0.0.1:39654";
QClient consumer = new QClient("subscriber_" + Guid.NewGuid().ToString("N"), ipPort);
consumer.OnMessage += Subscriber_OnMessage;
consumer.OnDisconnected += Client_OnDisconnected;
consumer.Connect();
consumer.Subscribe(topic);

WebSocket

wsserver usage

WSServer server = new WSServer();
server.OnMessage += Server_OnMessage;
server.Start();

private static void Server_OnMessage(string id, WSProtocal data)
{
    Console.WriteLine("WSServer 收到{0}的消息:{1}", ConsoleColor.Green, id, Encoding.UTF8.GetString(data.Content));
    server.Reply(id, data);
}

wsclient usage

WSClient client = new WSClient();
client.OnPong += Client_OnPong;
client.OnMessage += Client_OnMessage;
client.OnError += Client_OnError;
client.OnDisconnected += Client_OnDisconnected;
client.Connect();
client.Send("hello world!");
client.Ping();
client.Close();

RedisTest

https://github.com/yswenli/WebRedisManager

saea.redis usage

 var cnnStr = "server=127.0.0.1:6379;passwords=yswenli";
 RedisClient redisClient = new RedisClient(cnnStr);
 redisClient.Connect();
 redisClient.GetDataBase(1).Set("key", "val");
 var val = redisClient.GetDataBase().Get("key");

SAEA.MVC

https://github.com/yswenli/WebRedisManager

saea.mvc init usage

SAEAMvcApplication mvcApplication = new SAEAMvcApplication(root: "/html/");
//设置默认控制器
mvcApplication.SetDefault("home", "index");
mvcApplication.SetDefault("index.html");
//限制
mvcApplication.SetForbiddenAccessList("/content/");
mvcApplication.SetForbiddenAccessList(".jpg");

mvcApplication.Start();

saea.mvc controller usage

[LogAtrribute]
public class HomeController : Controller
{          
	[Log2Atrribute]
	[HttpGet]
	[HttpPost]
	public ActionResult Index()
	{
		return Content("Hello,I'm SAEA.MVC!你好!");
	}
	
	public ActionResult Show()
	{
		var response = HttpContext.Response;
		response.ContentType = "text/html; charset=utf-8";
		response.Write("<h3>测试一下那个response对象使用情况!</h3>参考消息网4月12日报道外媒称,法国一架“幻影-2000”战机意外地对本国一家工厂投下了炸弹。据俄罗斯卫星网4月12日援引法国蓝色电视台报道,事故于当地时间10日发生在卢瓦尔省,当时两架法国空军的飞机飞过韦尔尼松河畔诺让市镇上空,一枚炸弹从其中一架飞机上掉了下来,直接掉在了佛吉亚公司的工厂里。与此同时,有两人受伤。一名目击者称,“起初是两架战机飞过,然后我们都听到了物体撞击的声音,声音相当响,甚至盖过了飞过的飞机的噪音。”法国空军代表称,掉在工厂里的炸弹是演习用的,里面没有装炸药,本来是要将它投到离兰斯市不远的靶场。这名代表称事件“非常非常罕见”,目前正进行调查。");
		response.End();
		return Empty();
	}
	
	public ActionResult GetModels(string version, BasePamars basePamars, PagedPamars pagedPamars)
	{
		return Content($"version:{version}  basePamars:{Serialize(basePamars)}  pagedPamars:{Serialize(pagedPamars)}");
	}	
	
	public ActionResult Download()
	{
		return File(HttpContext.Server.MapPath("/Content/Image/c984b2fb80aeca7b15eda8c004f2e0d4.jpg"));
	}

	[HttpPost]
	public ActionResult Upload(string name)
	{
		var postFiles = HttpContext.Request.PostFiles;
		return Content($"ok!name:{name}");
	}
}

SAEA.RPC

saea.rpc service usage

var sp = new ServiceProvider();
sp.OnErr += Sp_OnErr;
sp.Start();

[RPCService]
public class HelloService
{
	public string Hello()
	{
		return "saea.rpc hello!"
	}
}

saea.rpc client usage

var url = "rpc://127.0.0.1:39654";
RPCServiceProxy cp = new RPCServiceProxy(url);
cp.OnErr += Cp_OnErr;
cp.HelloService.Hello();

SAEA.Message

saea.message server usage

MessageServer server = new MessageServer(1024, 1000 * 1000, 30 * 60 * 1000);

server.OnDisconnected += Server_OnDisconnected;

server.Start();

saea.message client usage

var cc1 = new MessageClient();
cc1.OnPrivateMessage += Client_OnPrivateMessage;
cc1.Connect();

//私信
cc1.SendPrivateMsg(cc2.UserToken.ID, "你好呀,cc2!");

//订阅
cc1.Subscribe(channelName);

//发送频道消息
cc1.SendChannelMsg(channelName, "hello!");

//创建群组
cc1.SendCreateGroup(groupName);

//加入群组
cc2.SendAddMember(groupName);


//发送群消息
cc1.SendGroupMessage(groupName, "群主广播了!");

//退群
cc2.SendRemoveGroup(groupName);

Instance screenshot










More

WebRedisManager也是基于此的一款redis管理工具,具体可参见:https://www.cnblogs.com/yswenli/p/9460527.html git源码:https://github.com/yswenli/WebRedisManager

GFF一款仿QQ通信程序同样基于此,具体可参见:https://github.com/yswenli/GFF

About

SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服…

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 98.8%
  • Other 1.2%