2016-07-18 5 views
-1

У меня есть задача создать javascript приложение реального времени. Серверная сторона готова (wss: //), я должен создать клиентскую сторону.Запрос на соединение с данными

Основные задач у меня есть проблемы с:

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

{ 
    "$type": "ping", 
    "seq": 1 
} 

сервер ответит:

{ 
    "$type": "pong", 
    "seq": 1 
} 

запрос клиента

{ 
    "$type": "subscribe_tables" 
} 

Сервер ответит со списком таблиц, и обновить клиент с table_added, table_removed и table_updated сообщений при изменении статуса.

{ 
    "$type": "table_list", 
    "tables": [ 
    { 
     "id": 1, 
     "name": "table 1", 
     "description" : "one, two" 
    }, { 
     "id": 2, 
     "name": "table 2" 
     "description" : "two, three" 
    } 
    ] 
} 

table_updated событие

{ 
    "$type": "update_table", 
    "table": { 
    "id": 3, 
    "name": "table - Foo Fighters", 
    "participants": 4 
    } 
} 

Вопрос: Я знаю, что я могу использовать new EventSource(), это правильно? Как я могу отправить данные $type, например с ним?

+0

Странно, что вы сказали бы, что «сервер готов», когда вы еще не знаете, как ваш клиент будет подключаться и получать данные. Как вы планируете получать данные от клиента: http-запросы, веб-сокеты или события на стороне сервера? – jfriend00

+0

Я могу подключиться к серверу через wss: // – MurDaD

+0

Итак, если ваш планшет является вашим планом, то почему вы говорите об использовании 'new EventSource()'. Прямо сейчас, весь ваш вопрос не имеет смысла.Мы не можем сказать, о чем вы действительно просите о помощи. Если вы подключаетесь к webSocket, вы просто отправляете данные с сервера через webSocket и читаете эти данные с webSocket на клиенте. – jfriend00

ответ

0

Я знаю, что могу использовать новый EventSource(), это правильно? Как можно отправить данные типа $, например с ним?

Нет, это не так. Если ваш сервер ожидает соединение с WebSocket, вы используете new WebSocket(...) от клиента, чтобы установить соединение с клиентом на сервер. Объект EventSource() используется для событий на стороне сервера, что представляет собой совершенно другой транспорт из webSocket.

Вы можете посмотреть примеры программирования here on MDN для использования webSocket.

Кроме того, если вы пытаетесь отправить объекты Javascript в качестве данных, вы, как правило, используют JSON.stringify() сериализовать их в строку, а затем отправить его, а затем на приемном конце, вы будете использовать JSON.parse() для разбора строки JSON обратно в объект Javascript. Вот как вы отправите информацию, такую ​​как ваш $type, вместе с другими данными в том же сообщении.

FYI, socket.io - это библиотека, созданная на основе webSocket, которая стала очень популярной, поскольку она делает много вещей для вашего автоматически, которые обычно необходимы в программировании webSocket, таких как сериализация JSON, автоматическое повторное подключение, автоматическое сохранение, соединение обнаружение падения и т. д. Конечно, вам не обязательно использовать его в клиенте и на сервере, но это часто экономит много времени.