Добавление API на сервер xmpp?Непонятно о концепции сервера xmpp с пользовательским API - PullRequest
0 голосов
/ 23 декабря 2011

Я делаю приложение чата, доступное через нативные приложения на iPhone и Android. Я потратил некоторое время на изучение того, как это будет сделано, но, тем не менее, пока еще не совсем разбираюсь в этом. Например, я видел и следовал учебнику по мобильным вещам здесь (http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-server-setup/)

Однако, скажем, я хочу, чтобы мои приложения чата могли выходить за рамки входа в систему / проверки и отправки сообщений, как бы я это сделал?

Например, одна функция, которую я хотел бы добавить, - это возможность поиска в базе данных пользователей по таким критериям, как:

  • Сейчас на сайте
  • пользователей, которые соответствуют определенным критериям (местоположение, возраст и т. Д.)

Если, например, я использую ejabberd или Openfire в качестве сервера xmpp, как мне добавить эти новые пользовательские API, которые будут доступны с iPhone / Android?

Я просто делаю грубый пример, но, возможно, было бы неплохо сделать что-то вроде этого:

- (NSArray *) findUsersInCity: (NSString *) cityName

Как я могу заставить сервер xmpp передавать мне список тех пользователей, которые соответствуют критериям названия города?

Заранее спасибо !!

1 Ответ

4 голосов
/ 24 декабря 2011

Существует несколько различных способов расширения сервера XMPP:

Компонент XMPP

Компоненты существуют отдельно для сервера XMPP.Вы можете написать их практически на любом языке, и они подключаются к серверу XMPP по протоколу (http://xmpp.org/extensions/xep-0114.html). Компонент регистрируется для обработки субдомена сервера, и любые сообщения / IQ, адресованные этому компоненту, передаются прямо изСервер XMPP для вашего кода, для обработки и ответа. Например, сообщение может быть адресовано user@search.domain.com/resource вместо user@domain.com/resource.

Преимущество компонента заключается в том, что он должен работать с любым XMPPсервер (который в любом случае поддерживает компоненты, которые являются основными). Если вы перейдете с Openfire на ejabberd, например, вам не нужно будет выполнять какую-либо работу. Недостатком является то, что они не могут получить доступ к данным внутри самого сервера.Хорошо, если вы хотите предоставить доступ к внешним данным (скажем, своей собственной базе данных), но этого может быть недостаточно.

Плагин / Модуль

Это зависит от сервера идолжен быть написан на том же языке, что и сервер. Openfire имеет плагины, ejabberd имеет модули. Они могут интегрироватьСервер XMPP и дает вам гораздо больше возможностей.Однако для переключения серверов XMPP потребуется начать разработку с нуля.Если вы хотите создать плагин для Openfire, взгляните на Руководство по плагинам и Openfire API: API Docs .API является обширным, и вы можете получить большинство доступных для сервера данных.

Изменить исходный код

Не очень хороший вариант, но, возможно, стоит упомянуть - вы могли быскачайте исходный код Openfire, внесите изменения и пересоберите его.Я сделал бы это, только если бы вы были уверены, что API не сможет дать вам то, что вам нужно.

...