Server to client communication
Long-Polling vs WebSockets vs Server-Sent Events
Amazon SQS
Considerations
- 对于online的client
- 如果client offline怎么办? 两个思路
- Retry. 一旦发送失败, 就把消息放回到消息队列, 等稍后重试. 一定次数之后, 放弃, 写到DB里面做分析用.
- 把消息临时存储在一个对应于该client的地方. 当client上线的时候, 检查该存储.
- notification是如何触发的? client端? server端? 定时触发?
- client端: messaging
- server端: billing
- Persistence: 所有的message都要存到persistent storage里面.
- Rate Limiting: 确保client不被overwhelm
Insider: Notification Service
Real world Examples
- iOS: APNS (Apple Push Notification Service)
- Android: Firebase Cloud Messaging
- SMS: Twilio, Nexmo
- Email: Sendgrid and Mailchimp
Reference