配置服务
WebSocket 的宿主服务可以是多种形式的,下面将分别进行说明。
1、Asp.Net Web 或 Asp.Net MVC
在 Global.cs 的 Application_Start 方法里使用 WebSocketBuildOption 的单例进行配置。如下所示:
public class Global : System.Web.HttpApplication
{
protected void Application_Start()
{
//心跳检测时间间隔
WebSocketBuildOption.Default.HeartbeatInterval = TimeSpan.FromSeconds(10);
WebSocketBuildOption.Default.ReceiveBufferSize = 4 * 1024;
WebSocketBuildOption.Default.KeepAliveInterval = TimeSpan.FromSeconds(10);
//添加处理器
WebSocketBuildOption.Default.MapHandler<NotifyHandler>("/wsNotify");
WebSocketBuildOption.Default.MapHandler<ChatHandler>("/wsChat");
}
}
2、.Net Core
在 Startup.Configure 方法里使用 UseWebSockets 方法进行配置,如下所示:
namespace demo
{
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseWebSockets(options =>
{
//心跳检测时间间隔
options.HeartbeatInterval = TimeSpan.FromSeconds(10);
options.ReceiveBufferSize = 4 * 1024;
options.KeepAliveInterval = TimeSpan.FromSeconds(10);
//添加处理器
options.MapHandler<NotifyHandler>("/wsNotify");
options.MapHandler<ChatHandler>("/wsChat");
});
}
}
}
3、Console、Windows Forms 或 Windows Services
可以使用 WebSocketServer
类来启动一个 Http 服务,监听 WebSocket 的请求。如下所示:
static class Program
{
[STAThread]
static async Task Main()
{
var option = new WebSocketBuildOption();
option.HeartbeatInterval = TimeSpan.FromSeconds(10);
option.ReceiveBufferSize = 4 * 1024;
option.KeepAliveInterval = TimeSpan.FromSeconds(10);
await new WebSocketServer("http://127.0.0.1:8001", option).Start<NotifyHandler>();
}
}
💡 参数说明
- HeartbeatInterval: 心跳检测时间间隔。比如指定为 10 秒,则每 10 秒钟检测一次心跳,如果 3 次检测不到心跳则自动断开连接。
- HeartbeatTryTimes: 心跳检测的容错次数,默认为 3 次。如果 3 次检测不到心跳则自动断开连接。
- ReceiveBufferSize: 接收数据的缓冲区大小。
- KeepAliveInterval: 设置 WebSocket 的 keep-alive 值。
- Encoding: 设置字符编码,默认为 UTF-8。
- Formatter: 设置消息格式化器。
- AppKey: 设置应用标识,用于会话隔离。
- AliveKey: 服务器标识,用于集群下 WebSocket 主机的唯一标识,初始化时自动生成,不建议更改。