Git Product home page Git Product logo

Comments (3)

monnand avatar monnand commented on May 24, 2024

Until now, no, we do not have such support. However, I do think it is a very important feature and should be added in recent release.

May I know something more about your requirement? like which kind of status do you want to know? Total number of services? Total number of subscribers under some service?

Another obstacle we have here is redis. Well.. Redis is a wonderful datastore. However, not as powerful as we need right now. To support more complicated queries for status, we may need a relational database. This is partly why I did not start on the feature of status checking --- I think I may need to support SQL databases first, then add some other complex queries on top of the relational databases.

I will consider this feature request carefully and come up with some applicable approach.

from uniqush-push.

macocheung avatar macocheung commented on May 24, 2024

umm.. sorry, actually i would like to have a delivery status of each push request, which i can inquiry by webservice. As i am thinking if the push request is failed in first time, then it should be retry in the background. right? but the service has already returned the failed message to my http client. then how can I get the successful message if it really send successful?

Besides, i found that, maybe i'm wrong, it seems hasn't save the push request into datastore, which i'm thinking if the service down suddenly while the message is pushing. Could it be resume to which subscriber i'm sending to?

Btw, the uniqush is great pushing system, it helps me a lot.

from uniqush-push.

monnand avatar monnand commented on May 24, 2024

Thanks for using uniqush!

To answer your questions:

  • When you use an HTTP request to ask uniqush-push to push message, uniqush-push will respond an HTTP response message, containing the status of the action. i.e. If it is failed, you can immediately know the failure by checking the content of the HTTP response. Uniqush-push will response success if the message is successfully delivered to the corresponding push service provider(s) (like GCM, APNS, ADM.) uniqush-push will not guarantee the delivery to the device.
  • If there is an error, and the error is recoverable by re-sending according the the push service provider's documentation, then uniqush-push will try to resend the message. In this case, you will only receive an HTTP response saying that uniqush-push will retry. In this case, you cannot know the status of the message without checking the log file.
  • uniqush-push will not store the message into the datastore. It is a "best-effort" system, i.e. it will not guarantee anything about the delivery of the message to the final destination (the device.)

With that being said, you may have a question like How can I make sure that the device has received my message? A short answer is: You can't. Because neither GCM, nor APNS can guarantee the success of delivery. But remember, this is not the end of the world. Uniqush (as a system) provides (or will provide) another program to solve this problem.

To understand the solution, you need to remember: Uniqush is a name of a system that providing communication facility for mobile apps. uniqush-push is only one program. It is a part of Uniqush system, but not the only part. There are other parts, like uniqush-conn, and some other client libraries.

uniqush-conn provides a facility so that mobile devices can establish TCP connections with server side to retrieve/send message from/to the server. Some typical use case is like this: Server sends a message to uniqush-conn, saying it wants to send the message to some client; Then uniqush-conn will store the message in some datastore (redis, mysql, postgresql, etc.). If there is a TCP connection between uniqush-conn and the client, uniqush-conn will send the message directly through this connection; otherwise, uniqush-conn will ask uniqush-push to push some notification to the client, including a message ID. Once the client received the push notification, it will then connect to uniqush-conn and ask for that message with its message ID. Then the problem here is: What if uniqush-push cannot send the message? What if the notification got lost? uniqush-conn provides a function that allows client to request messages sent between a time interval. As I mentioned before, uniqush-conn stores the message in a datastore. The client can connect with uniqush-conn saying I need all messages sent on yesterday. Then uniqush-conn will retrieve those messages from the datastore and send them to the client.

from uniqush-push.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.