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);
            }
        }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        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);
        }