下面将介绍如何在iis上使用 websocket 。
创建项目
我们需要创建一个 WebApi
打开初始程序中 Program 类的 main 方法,并进行修改
添加管理类
创建一个管理类用于管理 WebSocket 的链接
1 public class WebSocketConnectionManager 2 { 3 private Dictionary<string, WebSocket> connections = new Dictionary<string, WebSocket>(); 4 private int onlineUserCount = 0; 5 6 //检测到链接时加入列表 7 public void AddWebSocket(WebSocket webSocket) 8 { 9 string connectionId = Guid.NewGuid().ToString(); 10 connections.TryAdd(connectionId, webSocket); 11 } 12 13 //断开链接时移除列表中数据 14 public void RemoveWebSocket(WebSocket webSocket) 15 { 16 var connection = connections.FirstOrDefault(pair => pair.Value == webSocket); 17 if (!connection.Equals(default(KeyValuePair<string, WebSocket>))) 18 { 19 connections.Remove(connection.Key); 20 } 21 } 22 23 //获取当前连接数 24 public int GetOnlineUserCount() 25 { 26 return onlineUserCount; 27 } 28 29 //链接计数器 30 public void IncrementOnlineUserCount() 31 { 32 onlineUserCount++; 33 } 34 public void DecrementOnlineUserCount() 35 { 36 if (onlineUserCount > 0) 37 { 38 onlineUserCount--; 39 } 40 } 41 }
将管理类以单例的方式添加到服务列表中
方便在控制器中调用,调用方法如下
1 [ApiController] 2 [Route("[controller]")] 3 public class WebSocketController : ControllerBase 4 { 5 private readonly WebSocketConnectionManager _webSocketConnectionManager; 6 public WebSocketController(WebSocketConnectionManager webSocketConnectionManager) 7 { 8 _webSocketConnectionManager = webSocketConnectionManager; 9 } 10 11 [HttpGet] 12 [Route("ConnectionNum")] 13 public IActionResult ConnectionNum() 14 { 15 int onlineUserCount = _webSocketConnectionManager.GetOnlineUserCount(); 16 17 return Ok("WebSocket API Connect Num - " + onlineUserCount); 18 } 19 }
在 IIS 中添加 WebSocket