提交 f4e48dfd 编写于 作者: 若汝棋茗

增加unity相关

上级 ab0c2fce
......@@ -132,7 +132,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientWinFormsApp", "exampl
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BytePool简单示例", "BytePool简单示例", "{6D046723-8625-4D69-BD71-64E5F43B210A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BytePoolConsoleApp", "examples\BytePool简单示例\BytePoolConsoleApp\BytePoolConsoleApp.csproj", "{F5AA7892-A533-4603-959F-A990AE569C59}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BytePoolConsoleApp", "examples\BytePool简单示例\BytePoolConsoleApp\BytePoolConsoleApp.csproj", "{F5AA7892-A533-4603-959F-A990AE569C59}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unity3d简单示例", "Unity3d简单示例", "{59C3DFB0-C6E1-4F7E-AD9D-9857A4153A1E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnityServerConsoleApp", "examples\Unity3d简单示例\UnityServer\UnityServerConsoleApp\UnityServerConsoleApp.csproj", "{F645710B-4FE8-430C-9860-B289743CAE23}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -296,6 +300,10 @@ Global
{F5AA7892-A533-4603-959F-A990AE569C59}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5AA7892-A533-4603-959F-A990AE569C59}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5AA7892-A533-4603-959F-A990AE569C59}.Release|Any CPU.Build.0 = Release|Any CPU
{F645710B-4FE8-430C-9860-B289743CAE23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F645710B-4FE8-430C-9860-B289743CAE23}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F645710B-4FE8-430C-9860-B289743CAE23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F645710B-4FE8-430C-9860-B289743CAE23}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -347,6 +355,7 @@ Global
{707CC6CD-17D0-4EC8-9CF7-D056F7740EC6} = {1DE974CF-D77E-4E9B-B3F9-7E5A3F9C4A67}
{82E99507-C5AA-4AC0-A857-6294D5CF9FFA} = {1DE974CF-D77E-4E9B-B3F9-7E5A3F9C4A67}
{F5AA7892-A533-4603-959F-A990AE569C59} = {6D046723-8625-4D69-BD71-64E5F43B210A}
{F645710B-4FE8-430C-9860-B289743CAE23} = {59C3DFB0-C6E1-4F7E-AD9D-9857A4153A1E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DB787235-A13A-4A3D-B5A8-5DFEB6511EEE}
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32811.315
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityServerConsoleApp", "UnityServerConsoleApp\UnityServerConsoleApp.csproj", "{92C0DFB7-E3EC-499D-85C7-69A3ED344264}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{92C0DFB7-E3EC-499D-85C7-69A3ED344264}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92C0DFB7-E3EC-499D-85C7-69A3ED344264}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92C0DFB7-E3EC-499D-85C7-69A3ED344264}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92C0DFB7-E3EC-499D-85C7-69A3ED344264}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {324D4D22-4EC7-457E-BD31-E23431C21FC4}
EndGlobalSection
EndGlobal
using System.ComponentModel;
using System.Text;
using TouchSocket.Core;
using TouchSocket.Core.ByteManager;
using TouchSocket.Core.Config;
using TouchSocket.Core.Dependency;
using TouchSocket.Core.Log;
using TouchSocket.Core.Plugins;
using TouchSocket.Rpc.TouchRpc;
using TouchSocket.Rpc;
using TouchSocket.Sockets;
using TouchSocket.Sockets.Plugins;
using TouchSocket.Rpc.TouchRpc.Plugins;
using System;
using System.IO;
using System.Threading;
namespace UnityServerConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
//unitypackage在本级目录下。
//已发布的apk和exe客户端也在本级目录下。
StartTcpService();
StartTcpRpcService();
Console.ReadKey();
}
static void StartTcpRpcService()
{
var service = new TcpTouchRpcService();
TouchSocketConfig config = new TouchSocketConfig()//配置
.SetListenIPHosts(new IPHost[] { new IPHost(7790) })
.SetThreadCount(50)
.UseDelaySender()
.UsePlugin()
.ConfigureContainer(a =>
{
a.SetLogger<ConsoleLogger>();//注册一个日志组
})
.ConfigureRpcStore(a =>
{
a.RegisterServer<MyRpcServer>();//注册服务
})
.ConfigurePlugins(a =>
{
a.Add<MyTcpRpcPlguin>();
})
.SetVerifyToken("TouchRpc");
service.Setup(config)
.Start();
service.Logger.Info($"{service.GetType().Name}已启动,监听端口:{7790}");
string code = service.RpcStore.GetProxyCodes("TcpRpcProxy");
File.WriteAllText("TcpRpcProxy.cs", code);
//service.RpcStore.ShareProxy(new IPHost(8848));
}
static void StartTcpService()
{
TcpService service = new TcpService();
service.Setup(new TouchSocketConfig()//载入配置
.SetListenIPHosts(new IPHost[] { new IPHost(7789) })//同时监听两个地址
.SetMaxCount(10000)
.SetThreadCount(10)
.UsePlugin()
.SetDataHandlingAdapter(() => new FixedHeaderPackageAdapter())
.ConfigurePlugins(a =>
{
a.Add<MyPlguin>();//此处可以添加插件
})
.ConfigureContainer(a =>
{
a.SetSingletonLogger<ConsoleLogger>();//添加一个日志注入
}))
.Start();//启动
service.Logger.Info("Tcp服务器已启动,端口7789");
}
}
class MyTcpRpcPlguin : TouchRpcPluginBase<TcpTouchRpcSocketClient>
{
protected override void OnStreamTransfering(TcpTouchRpcSocketClient client, StreamOperationEventArgs e)
{
client.Logger.Info($"客户端:{client.GetInfo()}正在传输流....,总长度={e.StreamInfo.Size}");
e.Bucket = new MemoryStream();
}
protected override void OnStreamTransfered(TcpTouchRpcSocketClient client, StreamStatusEventArgs e)
{
client.Logger.Info($"客户端:{client.GetInfo()}流传输结束,状态={e.Result}");
e.Bucket.SafeDispose();
}
}
class MyPlguin : TcpPluginBase<SocketClient>
{
protected override void OnConnected(SocketClient client, TouchSocketEventArgs e)
{
client.Logger.Info($"客户端{client.GetInfo()}已连接");
}
protected override void OnDisconnected(SocketClient client, ClientDisconnectedEventArgs e)
{
client.Logger.Info($"客户端{client.GetInfo()}已断开连接");
}
protected override void OnReceivedData(SocketClient client, ReceivedDataEventArgs e)
{
client.Logger.Info($"接收到信息:{Encoding.UTF8.GetString(e.ByteBlock.Buffer, 0, e.ByteBlock.Len)}");
client.Send($"服务器已收到你发送的消息:{e.ByteBlock.ToString()}");
}
}
/// <summary>
/// 单例服务
/// </summary>
public class MyRpcServer : RpcServer
{
public MyRpcServer(ILog logger)
{
this.m_timer = new Timer((obj) =>
{
logger.Info($"count={count}");
}, null, 0, 1000);
this.m_logger = logger;
}
Timer m_timer;
int count;
private readonly ILog m_logger;
[Description("登录")]
[TouchRpc(true, MethodFlags = MethodFlags.IncludeCallContext)]
public MyLoginModelResult Login(ICallContext callContext, MyLoginModel model)
{
if (model.Account == "123" && model.Password == "abc")
{
return new MyLoginModelResult() { Status = 1, Message = "Success" };
}
return new MyLoginModelResult() { Status = 2, Message = "账号或密码错误" };
}
[Description("性能测试")]
[TouchRpc(true)]
public int Performance(int i)
{
Interlocked.Increment(ref count);
return ++i;
}
}
public class MyLoginModel
{
public string Token { get; set; }
public string Account { get; set; }
public string Password { get; set; }
}
public class MyLoginModelResult
{
public byte Status { get; set; }
public string Message { get; set; }
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="0.6.0" />
</ItemGroup>
</Project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册