using Serein.Proto.WebSocket.Handle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NetWebSocket = System.Net.WebSockets.WebSocket;
namespace Serein.Proto.WebSocket
{
///
/// WebSocket服务
///
public interface ISereinWebSocketService
{
///
/// 目前有多少个连接
///
int ConcetionCount { get; }
///
/// 添加处理模块
///
///
///
ISereinWebSocketService AddHandleModule() where T : ISocketHandleModule, new();
///
/// 添加处理模块
///
///
/// 使用指定的实例
///
ISereinWebSocketService AddHandleModule(Func instanceFactory) where T : ISocketHandleModule;
///
/// 跟踪未处理的异常
///
///
///
ISereinWebSocketService TrackUnhandledExceptions(Action onExceptionTracking);
///
/// 添加新的 WebSocket 连接进行处理消息
///
///
Task AddWebSocketHandleAsync(NetWebSocket webSocket);
///
/// 推送消息
///
///
///
Task PushDataAsync(object latestData);
///
/// 设置回调函数,用于处理外部请求时的回复消息
///
///
void OnReplyMakeData(Func func);
///
/// 设置回调函数,回复外部请求时,记录消息内容
///
///
void OnReply(Action onReply);
}
}