コード例 #1
0
        public string SendMessage([FromBody] PushRequestModel model)
        {
            UserGroup userGroup;

            _userGroups.TryGetValue(model.GroupName, out userGroup);
            if (userGroup != null)
            {
                Log.Instance.Info("GroupName:" + model.GroupName + "Connected Users:" + userGroup.Users.Count);
                try
                {
                    Parallel.ForEach(userGroup.Users, new ParallelOptions()
                    {
                        MaxDegreeOfParallelism = 1000
                    }, userId =>
                    {
                        try
                        {
                            var user = _users.FirstOrDefault(x => x.Key == userId);
                            if (user.Value != null)
                            {
                                if (user.Value.State == WebSocketState.Open)
                                {
                                    var buffer = new ArraySegment <byte>(Encoding.UTF8.GetBytes(model.Message));
                                    user.Value.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None)
                                    .Wait(200);
                                }
                                else
                                {
                                    RemoveUser(user.Key);
                                }
                            }
                            else
                            {
                                RemoveUser(user.Key);
                            }
                        }
                        catch (Exception)
                        {
                            RemoveUser(userId);
                        }
                    });
                    return("Message Sent To " + userGroup.Users.Count);
                }
                catch (Exception exception)
                {
                    Log.Instance.Info(exception, "Err On SendMessageToAll");
                }
            }
            return("UserGroup Is Null");
        }
コード例 #2
0
        public async Task <HttpResponseMessage> Push(PushRequestModel model)
        {
            var message = new Message
            {
                Token        = model.DeviceToken,
                Notification = new Notification
                {
                    Title = model.Title,
                    Body  = model.Description
                }
            };

            var responseContent = await FirebaseMessaging.DefaultInstance.SendAsync(message);

            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(responseContent, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
コード例 #3
0
        public PushResponseModel sendPush([FromBody] PushRequestModel pushRequest)
        {
            PushResponseModel response = new PushResponseModel();

            try
            {
                var re      = Request;
                var headers = re.Headers;

                if (!headers.ContainsKey("api_key"))
                {
                    Response.StatusCode = 403;
                    response.STATUS     = "API key bulunamadı";
                    return(response);
                }
                else
                {
                    //TODO CHECK API KEY
                }

                if (pushRequest.platform == null)
                {
                    Response.StatusCode = 400;
                    response.STATUS     = "Lütfen platform belirtin";
                    return(response);
                }
                else
                {
                    //TODO check platform
                }

                if (pushRequest.deviceToken == null)
                {
                    Response.StatusCode = 400;
                    response.STATUS     = "Lütfen deviceToken belirtin";
                    return(response);
                }

                if (pushRequest.title == null)
                {
                    Response.StatusCode = 400;
                    response.STATUS     = "Lütfen title belirtin";
                    return(response);
                }

                if (pushRequest.body == null)
                {
                    Response.StatusCode = 400;
                    response.STATUS     = "Lütfen body belirtin";
                    return(response);
                }


                response.STATUS = "SUCCESS";
                return(response);
            }
            catch (Exception e)
            {
                Response.StatusCode = 500;
                response.STATUS     = "Sunucu hatası, lütfen daha sonra deneyiniz.";
                return(response);
            }
        }
コード例 #4
0
        // POST: api/SendPush
        public IHttpActionResult Post(PushRequestModel req)
        {
            try
            {
                var headers = Request.Headers;
                if (!headers.Contains("api_key"))
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)403,
                                   new HttpError("API key bulunamadı")
                                   )
                               ));
                }

                string token = headers.GetValues("api_key").First();

                if (token != "test")
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)401,
                                   new HttpError("API key geçersiz")
                                   )
                               ));
                }

                if (String.IsNullOrEmpty(req.platform))
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)400,
                                   new HttpError("Lütfen platform belirtin")
                                   )
                               ));
                }

                if (String.IsNullOrEmpty(req.deviceToken))
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)400,
                                   new HttpError("Lütfen deviceToken belirtin")
                                   )
                               ));
                }

                if (String.IsNullOrEmpty(req.title))
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)400,
                                   new HttpError("Lütfen title belirtin")
                                   )
                               ));
                }

                if (String.IsNullOrEmpty(req.body))
                {
                    return(new System.Web.Http.Results.ResponseMessageResult(
                               Request.CreateErrorResponse(
                                   (HttpStatusCode)400,
                                   new HttpError("Lütfen body belirtin")
                                   )
                               ));
                }
            }
            catch (Exception ex)
            {
                return(new System.Web.Http.Results.ResponseMessageResult(
                           Request.CreateErrorResponse(
                               (HttpStatusCode)500,
                               new HttpError("Sunucu hatası, lütfen daha sonra deneyiniz.")
                               )
                           ));
            }

            return(new System.Web.Http.Results.ResponseMessageResult(
                       Request.CreateResponse(
                           (HttpStatusCode)200,
                           "SUCCESS"
                           )
                       ));

            ;
        }