public async Task BroadcastAll(byte[] buffer, CustomWebSocket userWebSocket, ICustomWebSocketFactory wsFactory) { var all = wsFactory.All(); foreach (var uws in all) { await uws.WebSocket.SendAsync(new ArraySegment <byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None); } }
/// <summary> /// 广播消息给所有的客户端 /// </summary> /// <param name="buffer"></param> /// <param name="userWebSocket"></param> /// <param name="wsFactory"></param> /// <returns></returns> public async Task BroadcastAll(byte[] buffer, CustomWebSocket userWebSocket, ICustomWebSocketFactory wsFactory) { var all = wsFactory.All(); foreach (var uws in all) { if (uws.WebSocket.State != WebSocketState.Open) { Log4netHelper.Info(this, "此websocket的状态为:" + uws.Username + "<>" + uws.WebSocket.State.ToString()); continue; } await uws.WebSocket.SendAsync(new ArraySegment <byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None); } }
public async Task HandleNewUserMessage(ICustomWebSocketFactory wsFactory) { var all = wsFactory.All(); if (all.Count > 1) { var newMsg = new NewQuestionSocketMessage { NewQuestion = QuestionService.GetRandomQuestion(), NewQuestionDate = DateTime.Now, }; string serialisedMessage = JsonConvert.SerializeObject(newMsg); byte[] bytes = Encoding.UTF8.GetBytes(serialisedMessage); foreach (var uws in all) { await uws.WebSocket.SendAsync(new ArraySegment <byte>(bytes, 0, bytes.Length), WebSocketMessageType.Text, true, CancellationToken.None); } } }
public async Task HandleMessage(byte[] buffer, ICustomWebSocketFactory wsFactory) { string msg = Encoding.ASCII.GetString(buffer); var message = JsonConvert.DeserializeObject <UserAnswerQuestionSocketMessage>(msg); var all = wsFactory.All(); newQuestionSocketMessage = new NewQuestionSocketMessage { NewQuestion = QuestionService.GetRandomQuestion(), LastQuestionIsAnswerCorrect = message.IsAnswerCorrect, NewQuestionDate = DateTime.Now.AddSeconds(5), Username = message.Username }; string serialisedMessage = JsonConvert.SerializeObject(newQuestionSocketMessage); byte[] bytes = Encoding.UTF8.GetBytes(serialisedMessage); foreach (var uws in all) { await uws.WebSocket.SendAsync(new ArraySegment <byte>(bytes, 0, bytes.Length), WebSocketMessageType.Text, true, CancellationToken.None); } }
/// <summary> /// 返回信息到某类型用户 /// </summary> /// <param name="buffer"></param> /// <param name="usertype"></param> /// <param name="wsFactory"></param> /// <returns></returns> public async Task BroadcastUserTypeOthers(byte[] buffer, UserType usertype, ICustomWebSocketFactory wsFactory) { List <CustomWebSocket> others = wsFactory.All().Where(a => a.UserType == UserType.过账客户端).ToList(); Helperlog4.Info("返回信息到某类型用户,共找到下列用户:" + others.ConvertToJson()); foreach (CustomWebSocket uws in others) { //string msg = Encoding.UTF8.GetString(buffer); //String JSON = msg.Replace("\u0000", ""); //CustomWebSocketMessage message = JSON.ConvertToObject<CustomWebSocketMessage>(); //if (message.Type == WSMessageType.发送) Helperlog4.Info("返回信息到过账客户端:" + uws.Username + " 返回的数据为:" + uws.ConvertToJson() + "&&&&" + Encoding.UTF8.GetString(buffer)); //string serialisedMessage = JsonConvert.SerializeObject(message); //buffer = Encoding.UTF8.GetBytes(serialisedMessage); await uws.WebSocket.SendAsync(new ArraySegment <byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None); //} } //var others = wsFactory.Client(userWebSocket.Username); //await others.WebSocket.SendAsync(new ArraySegment<byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None); }