КОМЕТА (нажатие сервера клиенту) на [закрытом] iPhone

Переменные экземпляра являются общими для каждого создаваемого вами объекта. скажем, есть две переменные экземпляра

class ExpThisKeyWord{
int x;
int y;

public void setMyInstanceValues(int a, int b) {
    x= a;
    y=b;

    System.out.println("x is ="+x);
    System.out.println("y is ="+y);
}

}




class Demo{
public static void main(String[] args){

ExpThisKeyWord obj1 = new ExpThisKeyWord();
ExpThisKeyWord obj2 = new ExpThisKeyWord();
ExpThisKeyWord obj3 = new ExpThisKeyWord();

obj1.setMyInstanceValues(1, 2);
obj2.setMyInstanceValues(11, 22);
obj3.setMyInstanceValues(111, 222);



}
}

, если вы заметили выше код, мы инициировали три объекта, а три объекта вызывают метод SetMyInstanceValues. Как вы думаете, JVM правильно назначает значения для каждого объекта? есть трюк, JVM не увидит этот код, как это показано выше. вместо этого он будет выглядеть так, как показано ниже:

public void setMyInstanceValues(int a, int b) {
    this.x= a; //Answer: this keyword denotes the current object that is handled by JVM.
    this.y=b;

    System.out.println("x is ="+x);
    System.out.println("y is ="+y);
}
19
задан Chris Hanson 3 December 2008 в 20:38
поделиться

9 ответов

Существует несколько решений, доступных для использования , ТОПАЮТ клиент.

ТОПАЮТ, невероятно просто и легок, идеально подходит для iPhone.

я использовал этот как моя начальная точка и нашел это очень хорошим. Это имеет несколько объектных проблем выделения/утечки памяти, но после того как я приобрел навык программирования iPhone, их было легко сгладить.

Hope, которая помогает!

10
ответ дан 30 November 2019 в 04:59
поделиться

Можно ли использовать обычный сокет TCP/IP в приложении?

А, Если да тогда определенно необработанный сокет TCP/IP является более изящным решением. Из Вашего приложения для iPhone Вы просто ожидаете событий уведомления. Сокет открыт, пока Ваше приложение открыто. Если Вы хотите Вас, может даже использовать протокол HTTP / заголовки.

На стороне сервера можно использовать некоторую платформу для записи серверов, которые эффективно обрабатывают тысячи, открывают соединения TCP/IP. например, Скрученный , EventMachine или libevent. Тогда просто свяжите сервер основной сокет с http портом (80).

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

B) нет, необходимо использовать Apache и http клиент на стороне iPhone. Тогда необходимо знать, что целым решением для КОМЕТЫ является на самом деле работа вокруг для ограничений протокола HTTP и Apache / PHP.

Apache был разработан для обработки многих кратковременных соединений. Поскольку далеко я знаю, что только новейший Apache версий (mpm рабочий) может обработать эффективно большое количество открытого соединения. Ранее Apache сохранял один процесс для каждого подключения.

веб-браузеры имеют предел параллельных открытых соединений с одним веб-сервером (адрес URL на самом деле, например, www.foo.com, не IP-адрес www.foo.com). И предел является 2 соединениями. Кроме того, браузер позволит только для соединений Ajax с тем же сервером, с которого была загружена основная страница HTML.

3
ответ дан 30 November 2019 в 04:59
поделиться

Я записал веб-сервер для того, чтобы сделать точно такого рода вещь. Я продвигаю обновления в реальном времени через сервер с долгим опросом и как пример, я имел сафари на iPhone, отображающем те данные.

А приведенный пример сервера должен смочь обработать несколько тысяч параллельных клиентов, не пробуя слишком трудно. У меня есть план поместить их в иерархию, чтобы позволить, чтобы больше горизонтали масштабировалось (должно быть довольно тривиальным, но не влияет на мое текущее приложение).

2
ответ дан 30 November 2019 в 04:59
поделиться

Вы не упоминали, какую технологию серверной стороны Вы используете. Но в случае, если это - Microsoft .NET (или для любых других сотрудников Google, которые сталкиваются с этим), существует простая опция для кометы: http://www.codeplex.com/ncomet .

0
ответ дан 30 November 2019 в 04:59
поделиться

Вы хотите/, делают коммуникацию для Вашего приложения по http? В противном случае можно использовать платформу CFNetwork для использования сокетов (TCP/UDP), чтобы позволить приложению и серверу связываться. Из того, что я видел стека CFNetwork, это довольно прохладно, и делает его справедливо straitforward, чтобы читать и записать в потоки, и допускает синхронную передачу и асинхронную передачу. Это также позволяет, чтобы Вы определили обратные вызовы на своем сокете, разрешающем Вам быть уведомленными относительно событий как полученные данные, установленная связь, и т.д. Так, в Вашем примере Вы могли отправить информацию по сокету к Вашему серверу, и затем Вы могли определить обратный вызов, который прислушается к входящим данным по потоку и затем обновит Ваше приложение соответственно.

РЕДАКТИРОВАНИЕ: Действительно немного больше исследовал, и если Вы идете подход сокета, можно хотеть также посмотреть на классы NSStream. Они - сборка абстракций Какао сверху материала CFSocket.

0
ответ дан 30 November 2019 в 04:59
поделиться

Длинный опрос работал бы на то, чего Вы хотите достигнуть? Можно реализовать клиентское в нескольких строках обычного JavaScript, который будет легче, чем какая-либо платформа могла возможно быть.

Это также было бы тривиально для реализации его в ObjC (подключение, для ожидания ответа или тайм-аута, повторитесь)

ответы на мой вопрос Простой "Долгий Опрос" пример кода? , надо надеяться, объясняют, как чрезвычайно простой Долгий Опрос..

В основном Вы просто запросили бы URL, как обычно - веб-сервер примет соединение, но не отправит любые данные, пока это не будет доступно. При получении данных, или время соединения Вы снова соединяетесь (и повторение)

, самый сложный бит был бы серверной стороной сервера, поскольку Вы не можете использовать обычный потоковый веб-сервер как Apache, хотя это также имеет место с Кометой..

1
ответ дан 30 November 2019 в 04:59
поделиться

КОМЕТА, LightStreamer, Ajax весь этот спам повреждаются. Это - основы TCP, который никакие 'сообщения проверки активности' никогда не гарантируются, не проверяя с помощью ping-запросов трафик.. Таким образом, можно забыть, что длинный опрос, если достойная надежность или своевременная доставка должны быть гарантированы..

Это - просто шумиха, через которую все видели назад в 2003 когда начатая хромая мания..

-1
ответ дан 30 November 2019 в 04:59
поделиться

WebSync имеет клиент javascript, который работает на iPhone, если это то, что вам нужно

2
ответ дан 30 November 2019 в 04:59
поделиться

StreamHub Comet Server работает с iPhone из коробки, никаких плагинов или чего-либо еще не требуется. Просто просмотрел их сайт на iPhone, и все примеры работают, не нужно устанавливать Flash или что-то еще.

1
ответ дан 30 November 2019 в 04:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: