2013-09-17 1 views
9

У меня есть Meteor приложение A и другое приложение B, не используя Meteor, но совершая обмен данными с приложением A. Он отлично работает, когда я запускаю A на машине в моей локальной сети, но когда я развертываю его на хостинге meteor.com, это не работает. Сервер не отвечает.Как получить доступ к приложению, размещенному на meteor.com по протоколу DDP (WebSocket)?

B использует код new WebSocket("ws://" + host + ":3000/websocket") для подключения (протокол DDP). Но когда я меняю ws на wss, он больше не работает даже с машиной в локальной сети - он не отвечает.

Я видел, что главную страницу приложения A когда я открыть его в браузере использует URL-адреса, как

wss://ddp--6774-{my host name}.meteor.com/sockjs/465/asf0b7da/websocket.

Вопросы:

  1. Как я могу сделать B использовать безопасный WebSocket (WSS) для подключения?

  2. Как я могу подключить его к A, размещенному на {my host name} .meteor.com?

  3. Как заставить A ответить на запросы с использованием фиксированного URL-адреса, например ws://{my host name}.meteor.com:3000/websocket? Как я могу заставить его использовать ws вместо wss?

  4. Должен ли я указать что-то в config.js или settings.js?

  5. Есть ли способ указать переменные окружения для хостинга meteor.com, например DDP_DEFAULT_CONNECTION_URL, NODE_OPTIONS?

ответ

7
  1. Сервер WebSocket обрабатывается sockjs, так до тех пор, пока вы используете стандарт WSS он должен «просто работать» (см https://github.com/sockjs/sockjs-node). Если вы используете websocket на своем клиенте, для использования веб-сокетов это должно быть хорошо. Проекты атмосфера/метеорит используют клиент node-ddp с защищенными сокетами (было несколько проблем, но я думаю, что они отсортированы). (В свою очередь, зависит от faye-websockets library)

  2. Я не уверен, на каком языке вы кодируете свое приложение B, но вам нужно использовать DDP-клиент для подключения к вашему серверу, или вы можете написать один , спецификация DDP равна open и reversible. Есть несколько реализаций DDP там, некоторые, возможно, необходимо довести до даты, предварительно 1 релиз спецификации:

    Кроме того, вы можете столкнуться с проблемой, как вы обнаружили соединение new WebSocket("ws://" + host + ".meteor.com/websocket") бесплоден, это потому, что метеор развернуть хостинг использует DDP прокси (доступ к которой осуществляется через ddp--xxxx-{my host name}.meteor.com, но xxxx также всегда когда вы создаете новое развертывание, вам нужно получить доступ к html-файлу и проанализировать, что такое сервер ddp, или делать заметки о нем каждый раз, когда вы развертываете приложение.

  3. Если вы подключаетесь к порту 443, wss. Я не слишком уверен в том, что websockets перенаправляет. Это серверная вещь, поэтому, если вы используете развертывание метеоров, вы не будете контролировать это еще (возможно, когда они освободят галль axy это может измениться). Возможно, пакет force-ssl может помочь? Не слишком уверенно, что он также накладывает на веб-элементы часть соединения.

  4. Для DDP нет никаких известных параметров, которые можно указать в настройках

  5. Для метеора Deploy хостинг вы не можете изменить сервер DDP использовать другой или изменить переменные окружения (см https://github.com/oortcloud/unofficial-meteor-faq) ,

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

Btw извините за расположение/расстояние, я не могу повесить эту вещь.

+2

Это был просто неправильный порт. Работает на порте 443 штрафа. Позор мне. – boqapt

+0

Я не могу подключиться к моему приложению, которое развернуто на Heroku. Я пробовал все URLs в списке: WSS: // .com/WebSocket WSS: // .com/WebSocket: 443 WSS: // .com: 443 WSS: // .com/ WS: // .com WS: // .com/WebSocket WS: // .com/WebSocket: 443 WS: // .com: 443/WebSocket WSS: // .com : 443/websocket ws: // .com: 3000/websocket wss: // .com: 3000/websocket ws: // .com: 3000 wss: // .com: 3000 – mcissel

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