Comments (4)
Hi Riandy,
I think the comment in the code is incorrect but the code itself is correct. The code you pointed out collects device IDs which later are excluded. Take a look here https://github.com/tinode/chat/blob/devel/push_fcm/push_fcm.go#L73-L80
It skips the device IDs which were online and received the message. It sends to devices which were NOT online: https://github.com/tinode/chat/blob/master/push_fcm/push_fcm.go#L91
from chat.
The code you pointed out collects device IDs which later are excluded.
Yes, I’m aware of that. Hehe…
If we take a look at this block, we will see that the topic only exclude device ids which session is attached to that topic.
So for example, if user A is online by subscribing to “me”
topic but he doesn’t subscribe to “topic_A”
, then when there is new message in “topic_A”
, user A will still receive push notification.
So in the end, user A would receive both {pres}
& push notification.
This is the problem which I’m trying to address.
from chat.
So for example, if user A is online by subscribing to “me” topic but he doesn’t subscribe to “topic_A”, then when there is new message in “topic_A”, user A will still receive push notification.
Correct, the user will receive both {pres} and push. But I think that's the desired behavior. Is it not? I just checked Telegram and WhatsApp and both of them behaved in this exact way. It seems logical. What am I missing?
from chat.
Lol..🤣
Yeah, you’re right, Gene. I just checked it too. Whatsapp also have the same behavior.
I was under impression that push message should only be used when socket connection is not established between client & server. So I thought when user online, the server should not send push message towards the client.
But after observing Whatsapp, it is much better with this behavior. Because user become more aware that there is new message incoming 👍 .
Thanks a lot, Gene. Sorry to bother you. Lol.
from chat.
Related Issues (20)
- Unable to create new root user using official container HOT 2
- Provide arm64-linux build HOT 2
- Unable to `{sub}` with `on_behalf_of` HOT 2
- generate error HOT 1
- Can't connect to external database HOT 4
- [Question] External config is not working as expected HOT 2
- crash when removing a topic with RethinkDB HOT 3
- A feature request for status values. HOT 2
- error: The data couldn’t be read because it isn’t in the correct format in IOS HOT 1
- Can't initialize postgres database (does not use configured database to init) HOT 1
- Repetitive sub<->leave requests on same topic results in some leave requests with no response HOT 3
- Error starting gRPC call. HttpRequestException: No connection could be made because the target machine actively refused it. (127.0.0.1:6061) SocketException: No connection could be made because the target machine actively refused it. HOT 3
- Support S3 Compatible Storage Providers HOT 7
- External jwt token authenticator HOT 2
- Tinode not triggering password reset emails HOT 3
- NOT WORKING VIDEO CALL OTHER INTERNET HOT 1
- Cluster Not Working, Error: [ cluster: call failed two gob: unknown type id or corrupted data ] HOT 1
- In-app unread message counter does not account for deleted messages HOT 1
- How to create just a p2p topics? HOT 1
- Cannot initialize postgresql database HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chat.