
Nuget : Xiaofeng.net
| QQ 그룹 번호 | QQ 그룹 | 공식 계정 |
|---|---|---|
| 748408911 | ![]() | ![]() |
소스 코드 : https://github.com/zhuovi/xiaofeng.net
튜토리얼 : https://www.yuque.com/fayelf/xiaofeng
Xiaofeng Network Library는 소켓 클라이언트 및 서버를 캡슐화하고 현재 라이브러리를 기반으로 구독, 게시 및 기타 기능을 쉽게 구현할 수 있습니다.
xiaofeng.net xiaofeng.net이있는 xiaofeng.net 생성기.
.NET CLI
$ dotnet add package XiaoFeng.Net --version 3.1.5
패키지 관리자
PM> Install-Package XiaoFeng.Net --Version 3.1.5
packagereference
<PackageReference Include="XiaoFeng.Net" Version="3.1.5" />
Paket Cli
> paket add XiaoFeng.Net --version 3.1.5
스크립트 및 대화식
> #r "nuget: XiaoFeng.Net, 3.1.5"
케이크
// Install XiaoFeng.Net as a Cake Addin
#addin nuget:?package=XiaoFeng.Net&version=3.1.5
// Install XiaoFeng.Net as a Cake Tool
#tool nuget:?package=XiaoFeng.Net&version=3.1.5
1. 소켓 클리어가 DNS에 연결되면 버그 수정;
1. Socketclient에서 NetworkDelay의 최소 및 최대 값의 판단을 최적화합니다.
2. 호스트가 IP에 연결된 Socketclient의 버그를 최적화합니다.
3. xiaofeng.net.websocketclient 요청 헤더를 최적화합니다.
4. 네트워크 클라이언트 최적화;
1. 네트워크 지연 시간이 사용될 때 서버가 WebSocket 클라이언트를받을 때 때때로 연결을 거부하는 버그를 최적화하십시오.
2. SocketServer 및 SocketClient 추가 NetworkDelay 네트워크 지연 속성;
3. SocketServer에서 accepttcpclient 메소드를 최적화합니다.
1. WebSocket 클라이언트에서 포장을 풀지 않은 버그를 최적화하십시오.
2. 소켓 클리어가 OnMessage 이벤트에서만 호출되는 버그를 최적화하지만 첫 번째 연결을위한 OnMessageByte 이벤트는 아닙니다.
3. SocketClient는 LastMessageTime의 마지막 통신 시간과 ConnectedTime 연결 시간을 증가시킵니다.
4. 클라이언트가 WebSocket인지 소켓인지 여부에 대한 식별을 최적화합니다.
5. SocketClient Connection Method 리턴 유형을 추가합니다.
1. Postman이 SSL에서 지속적으로 메시지를 보낼 때 서버가 메시지를받을 수없는 문제를 해결했습니다.
1. WebSocketClient의 속성을 클라이언트 요청 정보에 추가하십시오.
2. WebSocketClient는 시작 전송 데이터를 추가합니다.
3. 소켓 네트워크 라이브러리 주석을 최적화합니다.
4. SocketServer가 메시지를받을 때마다 새 연결 콜백을 보내는 버그를 수정했습니다.
1. 소켓 라이브러리, SocketServer, WebSocketServer, SocketClient, WebSocketClient를 다시 작성하십시오.
| 네임 스페이스 | 수업 도서관 | 오픈 소스 상태 | 설명 | 기능을 포함합니다 |
|---|---|---|---|---|
| xiaofeng.prototype | Xiaofeng.core | 확장 된 라이브러리 | 유형 변환을 마케팅합니다 totimestamp, timestamps timestamp에 시간이 걸립니다 GetBasePath는 파일의 절대 경로를 가져오고 Linux 및 Windows를 지원합니다. getFileName 파일 이름을받습니다 GetMatch, GetMatches, GetMatchs, IsMatch, ReplacEpatten, RemovePattern 정규식 작업 | |
| xiaofeng.net | xiaofeng.net | 네트워크 라이브러리 | Xiaofeng Network Library는 소켓 클라이언트 및 서버 (소켓, WebSocket)를 캡슐화하고 현재 라이브러리를 기반으로 구독, 게시 및 기타 기능을 쉽게 구현할 수 있습니다. | |
| xiaofeng.http | Xiaofeng.core | 시뮬레이션 요청 라이브러리 | 네트워크 요청을 시뮬레이션합니다 | |
| xiaofeng.data | Xiaofeng.core | 데이터베이스 운영 라이브러리 | SQLServer, MySQL, Oracle, Dameng, SQLite, Access, OLEDB, ODBC 등과 같은 수십 개의 데이터베이스를 지원합니다. | |
| xiaofeng.cache | Xiaofeng.core | 캐시 라이브러리 | 메모리 캐시, Redis, MemcachedCache, MemoryCache, Filecache Cache | |
| xiaofeng.config | Xiaofeng.core | 구성 파일 라이브러리 | XML, JSON, INI 파일 형식에있을 수있는 모델을 작성하여 구성 파일을 자동으로 생성합니다. | |
| Xiaofeng. 크립 옵 그래프 | Xiaofeng.core | 암호화 알고리즘 라이브러리 | AES, DES, RSA, MD5, DES3, SHA, HMAC, RC4 암호화 알고리즘 | |
| xiaofeng.excel | xiaofeng.excel | Excel Operation Library | Excel Operations, Excel 생성, Excel 편집, Excel 컨텐츠 읽기, 테두리, 글꼴, 스타일 및 기타 기능 | |
| xiaofeng.ftp | xiaofeng.ftp | FTP 요청 라이브러리 | FTP 클라이언트 | |
| xiaofeng.io | Xiaofeng.core | 파일 작동 라이브러리 | 파일 읽기 및 쓰기 작업 | |
| xiaofeng.json | Xiaofeng.core | JSON 직렬화, 사제화 라이브러리 | JSON 직렬화, 사제화 라이브러리 | |
| xiaofeng.xml | Xiaofeng.core | XML 직렬화, 사제 라이브러리 | XML 직렬화, 사제 라이브러리 | |
| xiaofeng.log | Xiaofeng.core | 로그 라이브러리 | 로그 파일, 데이터베이스를 작성하십시오 | |
| xiaofeng.memcached | xiaofeng.memcached | 밈 캐시 라이브러리 | MemCached Middleware는 .NET 프레임 워크, .NET 커널 및 .NET 표준 라이브러리가 매우 편리한 클라이언트 도구를 지원합니다. 세트, 추가, 교체, 선불, 추가, cas, get, get, gat, gat, delete, t | |
| xiaofeng.redis | xiaofeng.redis | Redis 캐시 라이브러리 | Redis Middleware는 매우 편리한 클라이언트 도구 인 .NET 프레임 워크, .NET 커널 및 .NET Standard Library를 지원합니다. 해시, 키, 문자열, ZSET, 스트림, 로그, 목록, 구독 및 게시 및 스레드 풀링의 기능을 구현합니다. | |
| Xiaofeng. 스레딩 | Xiaofeng.core | 스레드 라이브러리 | 스레드 작업, 스레드 큐 | |
| xiaofeng.mvc | xiaofeng.mvc | 저 코드 웹 개발 프레임 워크 | .NET Core Basic 클래스, CMS 프레임 워크의 빠른 개발, 실제 로우 코드 플랫폼, 자체 역할 권한, WebAPI 플랫폼, 배경 관리, 호스팅 가능한 서비스 실행 명령 : application.exe 서비스 이름 서비스 설명, 명령 및 삭제 시작 중지 정지 정지를 설치하십시오. | |
| xiaofeng.proxy | xiaofeng.proxy | 에이전트 라이브러리 | 개발 중 | |
| xiaofeng.tdengine | xiaofeng.tdengine | tdengine 클라이언트 | 개발 중 | |
| xiaofeng.gb28181 | xiaofeng.gb28181 | 비디오 감시 라이브러리, SIP 라이브러리, GB28181 프로토콜 | 개발 중 | |
| xiaofeng.onvif | xiaofeng.onvif | 비디오 감시 라이브러리 ONVIF 프로토콜 | xiaofeng.onvif는 c#을 사용하여 .NET 플랫폼을 기반으로 ONVIF의 일반적으로 사용되는 인터페이스, 장치, 미디어, 김벌 및 기타 기능을 캡슐화합니다. WCF 서비스를 거부하여 동적 프록시를 참조하여 WSDL 유사 파일을 생성하고 기본 XML 확장 마크 업 언어를 사용하여 매개 변수를 캡슐화합니다. 모든 데이터 흐름은 제어 가능합니다. |
//新建一个服务端,同时支持websocket,socket客户端连接
var server = new NetServer < ServerSession > ( 8088 )
{
//是否启用ping
IsPing = true ,
//是否启用新行
IsNewLine = true ,
//传输编码
Encoding = System . Text . Encoding . UTF8 ,
//认证 认证不过则直接断开
SocketAuth = 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 XiaoFeng . Net . NetClient < XiaoFeng . Net . ClientSession > ( "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 ( "取消订阅频道" ) ;