服务端实例
//新建一个服务端,同时支持websocket,socket客户端连接
var server = new SocketServer(8088)
{
//是否启用pong
IsPong = true,
//Pong时间
PongTime = 30,
//传输编码
Encoding = System.Text.Encoding.UTF8,
//认证 认证不过则直接断开
Authentication = s =>
{
//判断 客户端是否符合认证,不符合则直接返回false即可
return true;
}
};
server.OnStart += (s, e) =>
{
//服务端启动事件
Console.WriteLine($"启动!-{DateTime.Now:yyyy-MM-dd HH:mm:ss.fffffff}");
};
server.OnNewConnection += (s, e) =>
{
//客户端新连接事件
Console.WriteLine($"新连接-{DateTime.Now:yyyy-MM-dd HH:mm:ss.fffffff}");
//给当前客户端设置一个频道名 为后边按频道名发送作准备
//一个客户端可以订阅多个频道
//websocket可以从头里面获取标识
//如果非websocket 可以从消息里设置频道消息
if (s.Headers.IndexOf("Channel:a") > 0)
s.AddChannel("a");
else
s.AddChannel("b");
};
server.OnDisconnected += (s, e) =>
{
//客户端断开连接事件
Console.WriteLine($"断开连接!-{DateTime.Now:yyyy-MM-dd HH:mm:ss.fffffff}");
};
server.OnMessage += (s, m, e) =>
{
//接收消息事件
if (m.IndexOf("Channel:a") > 0)
{
s.AddChannel("a");
return;
}
else if (m.IndexOf("Channel:b") > 0)
{
s.AddChannel("b");
return;
}
Console.WriteLine($"消息-{m}-{DateTime.Now:yyyy-MM-dd HH:mm:ss.fffffff}");
//把当前消息发送到频道名为a的所有客户端
server.Send("a", Encoding.UTF8.GetBytes("消息"));
//回复当前客户端消息
s.Send("消息");
//发送消息给所有客户端
server.Send("消息");
};
server.OnMessageByte += (session, message, e) =>
{
//接收消息事件
session.Send("回复客户端消息");
};
server.OnError += (s, e) =>
{
//服务端出错事件
Console.WriteLine($"出错-{e.Message}-{DateTime.Now:yyyy-MM-dd HH:mm:ss.fffffff}");
};
server.OnClientError += (session, e) =>
{
//客户端出错事件
};
server.OnError += (session, e) =>
{
//服务端出错事件
};
server.OnStop += (socket, e) =>
{
//服务端停止事件
};
server.Start();
//添加黑名单
server.AddIpBlack("10.10.10.10");
//移除黑名单
server.RemoveIpBlack("10.10.10.10");
//清空黑名单
server.ClearIpBlack();
//断开所有客户端
server.ClearQueue();
//在线客户端列表 复制出来的
var clients = server.GetData();
//在线客户端列表 原列表
var clients1 = server.ConnectionSocketList;
客户端实例
var client = new SocketClient("127.0.0.1", 8888);
client.OnStart += (socket, e) =>
{
//启动消息
};
client.OnClose += (socket,e)=>
{
//关闭消息
};
client.OnDisconnected += (session,e)=>{
//断开连接消息
};
client.OnError += (socket,e)=>
{
//出错消息
};
client.OnMessageByte += (session,message,e)=>
{
//接收信息
};
//启动客户端
client.Start();
client.Send("发送消息");
client.Subscribe("订阅频道");
client.UnSubscribe("取消订阅频道");