2011-01-05 2 views
1

Я работаю над приложением чата (необходимо подключиться к серверу) на iPhone. Отправляющий пакет с iPhone не должен быть проблемой.Подключение к разъему на iPhone (IOS 4.x)

Но я хотел бы знать, можно ли iPhone устанавливать соединение сокетов на сервере непрерывно или навсегда в мобильной среде.

ИЛИ Что мне нужно сделать, чтобы обеспечить живое соединение? Нужно послать что-то по нему, чтобы сохранить его в живых?

Спасибо.

+0

Да, мы можем это сделать – GhostRider

+0

SkyEagle888: вы можете сделать это, просто используйте обновление cllocation в своем приложении, и в каждом месте сокет обновления будет вызывать и обновлять данные для вас, мы делаем это. – GhostRider

ответ

2

Не знаете, почему вы хотите, чтобы приложение для чата имело постоянное соединение ... Я бы лучше использовал SMS-модель. В любом случае, Cocoa NSStream основан на NSSocket и позволяет много функциональности. Взгляните на это.

Ответ на вопрос. Вот вкратце, что бы я сделал:

  1. Получите токен аутентификации с сервера.
    • это также позаботится о присутствии пользователя, если необходимо, но теперь мы говорим о состоянии; как только присутствие известно, сервер может отправлять уведомления клиентам, которые являются активными, и иметь пользователя в своем списке контактов.
  2. Получить список контактов и контактное состояние контакта.
  3. Когда сообщение отправляется, обрабатывайте его в соответствии с состоянием адресата, то есть в режиме онлайн, обменивайтесь обратным обращением к другому пользователю, если в автономном режиме, очередь для последующей доставки или отклонения.
  4. После того, как токен истекает, отклоните связь с соответствующей ошибкой и попросите клиента запросить новый токен.

Связь от сервера к клиенту, может быть основана на модели pull или push. В первом случае клиент периодически делает запрос и получает все сообщения. Это может показаться неплохим, но на самом деле, как часто пользователи создают и отправляют сообщения? Несколько раз в минуту? Это не слишком много. Так что выборка может произойти каждые 5-10 секунд.

Для модели push клиент должен иметь возможность слушать и принимать соединения.

Наконец, проверьте протокол SIP, протокол инициирования сеанса. Не нужно использовать полную версию, хотя. Просто базовый материал.

Это очень грубо и, возможно, упрощено. Я не знаю целевую сложность вашей системы общения. Например, простейшая вещь может также заключаться в том, что сервер просто обеспечивает взаимодействие клиента с клиентом, распределяя свои конечные точки, а клиенты сами заботятся обо всем.

Удачи вам!

+0

На самом деле, мы открыты для способ его реализации. Есть ли намек на более общий подход (например, Whatsapp или eBuddy) реализации? – SkyEagle888

+0

@ Schultz999: мы делаем одно приложение для iphone чата с программированием сокетов и его всегда показываем, кто в сети, и когда пользователь отключается, он появляется в офлайн-режиме. Нам не нужно ничего делать – GhostRider

+0

@GhostRider: ну, клиентское приложение должно каким-то образом знать что пользователь отключен. Он либо должен позвонить, чтобы обновить состояния списка контактов, либо загрузить эту информацию. Он просто не может материализоваться из воздуха, верно? Ну так что ты делаешь? – Schultz9999

2

Ответ на сверхвысокий срок службы, но, возможно, это поможет следующему человеку.

Я бы использовал xmppframework и jabber-сервер.

Смежные вопросы