/// <summary> /// 创建链接 /// </summary> /// <param name="httpContext"></param> /// <param name="next"></param> /// <returns></returns> private async static Task Acceptor(HttpContext httpContext, Func <Task> next) { _boProvider = (BoPriver)httpContext.RequestServices.GetService(typeof(BoPriver)); // 这句可太NB了 try { if (!httpContext.WebSockets.IsWebSocketRequest) { return; } UserInfo userInfo = new UserInfo(); userInfo.IPAddress = httpContext.Request.Query["userId"].ToArray()[0]; // userId暂时用ip替代 userInfo.NickName = httpContext.Request.Query["userName"].ToArray()[0]; userInfo.HeadPicture = httpContext.Request.Query["userHeadPic"].ToArray()[0]; var socket = await httpContext.WebSockets.AcceptWebSocketAsync(); if (dicWebsockets.ContainsKey(userInfo.NickName)) { dicWebsockets.Remove(userInfo.NickName); } dicWebsockets.Add(userInfo.NickName, new SocketObject { UserWebsoket = userInfo, WebSocket = socket }); UserInfo user = _boProvider._userInfoRepo.GetByName(userInfo.NickName); if (user == null) { user = userInfo; user.MessageLogs = new List <MessageLog>() { }; _boProvider._context.UserInfos.Add(user); SaveChange(); } _logger.Debug($"服务端建立websockect链接{userInfo.IPAddress}||{userInfo.NickName}"); // 建立连接后发送该用户进入聊天室提示信息 await SendMessage(socket, new SocketMessage { WsType = WsMessageTypeEnum.Enter, UserName = userInfo.NickName, UserHeadPic = userInfo.HeadPicture, }, userInfo.NickName); await RecvAsync(user, socket, CancellationToken.None); } catch (Exception ex) { _logger.Debug($"又特么异常了啊啊啊啊啊啊:{ex.Message.ToString()}"); } }
public IndexController(BoPriver boPriver) { _boProvider = boPriver; }
public WeChatController(BoPriver boPriver) { _boProvider = boPriver; }
public UserController(BoPriver boPriver) { _boProvider = boPriver; }
public MusicController(BoPriver boPriver) { _boProvider = boPriver; }
public RoomController(BoPriver boPriver) { _boProvider = boPriver; }