Статьи

WebSockets в проектах PhoneGap

Я большой поклонник API WebSockets, несмотря на все его достоинства в реальном времени, но платформа iOS (в настоящее время) не внедряет API WebSockets для мобильного Safari. Это отстой, особенно потому, что мне нравится создавать нативные приложения для iOS, используя такие классные фреймворки, как PhoneGap . Однако , поскольку я использую PhoneGap, я могу создать плагин PhoneGap, который вводит WebSockets в мой HTML и JavaScript. Так вот что я сделал.

Монтаж

Я предполагаю, что у вас есть проект PhoneGap и XCode для управления и создания проекта. Эти инструкции объяснят, как заставить WebSockets работать в вашем проекте.

Шаг 1: Асинхронное гнездо какао

Скачайте и включите AsyncSocket . ч / б m из проекта cocoaasyncsocket в каталоге вашего проекта (или в каком-либо подкаталоге, как вам угодно).

Затем перетащите эти файлы ( AsyncSocket . H /. M ) в пространство проекта XCode — они будут правильно включены при сборке проекта.

Шаг 2: Плагин PhoneGap: WebSocket

Теперь загрузите (или разветвитесь) проект PhoneGap-Plugin-WebSocket . Теперь повторите процесс, который вы сделали с проектом Async с WebSocketCommand . ч / б м файлов.

Затем скопируйте веб-сокет . js в ваш каталог www и добавьте следующее после включения phonegap.js :

<script src="websocket.js"></script>

Примечание: вы также можете опубликовать свой проект в Интернете и включить веб- сокет . js- скрипт, потому что он будет вводить WebSockets только в том случае, если a) WebSockets еще не доступны, и b) только если PhoneGap установлен.

Итак, теперь вы можете читать рок-н-ролл с собственной поддержкой WebSocket в вашем проекте PhoneGap.

использование

После того, как вы выполнили установку, использование точно такое же, как при использовании WebSocket:

var ws = new WebSocket('ws://example.com');
ws.onmessage = function () {
alert('a message was recieved');
};

ws.onopen = function () {
ws.send('I just connected!');
};

Одно небольшое предостережение: если вам нужен WebSocket сразу, вам нужно будет подождать, пока не сработает событие deviceready, но в противном случае вы можете просто создать сокет по требованию.

Если вы хотите узнать больше о PhoneGap, на моей конференции Full Frontal проводится однодневный семинар с Брайаном Леру полностью на PhoneGap, так что проверьте его!