问:ESFramework是什么?
答:.NET通信框架.
问:能做什么?
答:分布式通信的系统如:即时通讯,多人在线游戏、在线网页游戏、文件传送、数据采集、分布式OA系统、远程教育系统等。
问:平台要求?
答:直接构建在.NET Framework 2.0上.
问:具体怎么写?
答:引擎初始化(服务端)
[ESBasic.dll版本2.0.0.0,ESFramework.dll版本6.6.0.0,ESFramework.Boost.dll版本1.0.0.0,均来自官方Demo]
using ESFramework;
using ESFramework.Server.UserManagement;
using ESPlus.Application.Basic.Server;
using ESPlus.Application.Contacts.Server;
using ESPlus.Application.CustomizeInfo;
using ESPlus.Rapid;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleServer
{
class Program
{
static IRapidServerEngine RapidServerEngine = RapidEngineFactory.CreateServerEngine();
static void Main(string[] args)
{
try
{
InitEngine();
//等待用户退出服务应用
while (true)
{
Console.WriteLine("输入'exit'退出服务器:");
string cmd = Console.ReadLine();
if (cmd.ToLower() == "exit")
{
break;
}
else
{
Console.WriteLine("输入不正确!");
}
}
}
catch (Exception ex)
{
Console.WriteLine("发生异常:");
Console.WriteLine(ex.ToString());
Console.WriteLine("按任意键结束");
Console.ReadKey();
}
finally
{
//关闭服务
RapidServerEngine.Close();
}
}
private static void InitEngine()
{
//此处为免费用户.如果是其它类型的授权用户,请使用下面的语句设定正确的授权用户ID和密码。
ESPlus.GlobalUtil.SetAuthorizedUser("FreeUser", "");
//使用简单的好友管理器,假设所有在线用户都是好友。(仅仅用于demo)
DefaultContactsManager contactsManager = new DefaultContactsManager();
RapidServerEngine.ContactsManager = contactsManager;
//初始化服务端引擎端口(CustomizeHandler为客户端的消息,同步调用请求.BasicHandler为登陆验证)
RapidServerEngine.Initialize(4530, new CustomizeHandler(), new BasicHandler());
//服务端引擎初始化成功后,其UserManager属性才可用。
contactsManager.UserManager = RapidServerEngine.UserManager;
//上线时通知相关联系人
RapidServerEngine.ContactsController.ContactsConnectedNotifyEnabled = true;
//下线时通知相关联系人
RapidServerEngine.ContactsController.ContactsDisconnectedNotifyEnabled = true;
//设置重登陆模式:新连接取代旧链接
RapidServerEngine.UserManager.RelogonMode = RelogonMode.ReplaceOld;
//用户操作事件订阅
RapidServerEngine.UserManager.UserDisplayer = new UserDisplayer();
}
}
public class UserDisplayer : IUserDisplayer
{
public void AddUser(string userID, ClientType clientType, string userAddress)
{
Console.WriteLine("");
Console.WriteLine("AddUser:");
Console.WriteLine($"增加用户[{userID}],设备类型[{clientType.ToString("G")}],地址[{userAddress}]");
}
public void ClearAll()
{
Console.WriteLine("");
Console.WriteLine("ClearAll:");
Console.WriteLine("清空列表");
}
public void OnMessageReceived(string userID, int messageType)
{
//用户收到信息事件,用于统计下载次数
//Console.WriteLine("");
//Console.WriteLine("OnMessageReceived");
//Console.WriteLine($"收到用户[{userID}]消息:[{messageType}]");
}
public void OnMessageSent(string userID, int messageType)
{
//用户收到信息事件,用于统计上传次数
//Console.WriteLine("");
//Console.WriteLine("OnMessageSent");
//Console.WriteLine($"发给用户[{userID}]消息:[{messageType}]");
}
public void RemoveUser(string userID, string cause)
{
Console.WriteLine("");
Console.WriteLine("RemoveUser:");
Console.WriteLine($"用户ID[{userID}]已下线,原因[{cause}]") ;
}
}
public class CustomizeHandler : ICustomizeHandler
{
public void HandleInformation(stri