Не знаете, почему вы хотите, чтобы приложение для чата имело постоянное соединение ... Я бы лучше использовал SMS-модель. В любом случае, Cocoa NSStream основан на NSSocket и позволяет много функциональности. Взгляните на это.
Ответ на вопрос. Вот вкратце, что бы я сделал:
- Получите токен аутентификации с сервера.
- это также позаботится о присутствии пользователя, если необходимо, но теперь мы говорим о состоянии; как только присутствие известно, сервер может отправлять уведомления клиентам, которые являются активными, и иметь пользователя в своем списке контактов.
- Получить список контактов и контактное состояние контакта.
- Когда сообщение отправляется, обрабатывайте его в соответствии с состоянием адресата, то есть в режиме онлайн, обменивайтесь обратным обращением к другому пользователю, если в автономном режиме, очередь для последующей доставки или отклонения.
- После того, как токен истекает, отклоните связь с соответствующей ошибкой и попросите клиента запросить новый токен.
Связь от сервера к клиенту, может быть основана на модели pull или push. В первом случае клиент периодически делает запрос и получает все сообщения. Это может показаться неплохим, но на самом деле, как часто пользователи создают и отправляют сообщения? Несколько раз в минуту? Это не слишком много. Так что выборка может произойти каждые 5-10 секунд.
Для модели push клиент должен иметь возможность слушать и принимать соединения.
Наконец, проверьте протокол SIP, протокол инициирования сеанса. Не нужно использовать полную версию, хотя. Просто базовый материал.
Это очень грубо и, возможно, упрощено. Я не знаю целевую сложность вашей системы общения. Например, простейшая вещь может также заключаться в том, что сервер просто обеспечивает взаимодействие клиента с клиентом, распределяя свои конечные точки, а клиенты сами заботятся обо всем.
Удачи вам!
Да, мы можем это сделать – GhostRider
SkyEagle888: вы можете сделать это, просто используйте обновление cllocation в своем приложении, и в каждом месте сокет обновления будет вызывать и обновлять данные для вас, мы делаем это. – GhostRider