Сокет-сервер с Node.js и Cloud9 IDE

Я совершенно новичок в Cloud9 IDE, поэтому мой вопрос может быть глупым, но я не могу найти ответ в документах. Я хочу сделать клиент-серверное приложение с Node.js + MongoDB в качестве сокет-сервера и клиент-десктопное приложение, которое я отлаживаю и запускаю на своем компьютере (Cloud9 IDE не поддерживает язык, на котором я его пишу). Глядя на Cloud9 IDE, я нашел его очень удобным для разработки серверной части моего приложения и может быть решением для хостинга. Но я не могу найти, как сделать подключение к сокету от клиента. Для этого мне нужно знать IP-адрес или доменный адрес моего сервера (я полагаю, он выглядит как "https://socialcrm-c9-painkkkiller.c9.io") и номер порта. В документах я нашел «используйте process.env.PORT в качестве порта и process.env.IP в качестве хоста в ваших сценариях!» но для подключения к серверу мне нужны реальные значения! Команды console.log(process.env.PORT) и console.log(process.env.IP) дают мне только "8080" и 0.0.0.0 Использование "https://socialcrm-c9-painkkkiller.c9.io" в качестве домена и 8080 в качестве порта выдает ошибку сокета. Так можно ли вообще? И если можно как это сделать?


person Dmitry Malugin    schedule 15.08.2014    source источник
comment
stackoverflow.com/questions/20579747/   -  person vinayr    schedule 15.08.2014
comment
Я прочитал это перед публикацией вопроса. Мне это не помогло.   -  person Dmitry Malugin    schedule 15.08.2014


Ответы (2)


Cloud9 перенаправляет порт 80 https://socialcrm-c9-painkkkiller.c9.io на порт 8080. в вашем контейнере. Так что нет необходимости указывать порт.

Мы также поддерживаем веб-сокеты, и они работают точно так же. Нет необходимости указывать другой порт.

Единственное, что вам нужно сделать, это убедиться, что вы используете переменные среды для подключения к правильным $IP и $PORT при запуске внутреннего процесса.

person Ruben Daniels    schedule 15.08.2014
comment
Спасибо за ответ, я понял про порт, он может быть 80 или 8080, но я все еще не могу понять, как узнать правильный $IP. Все примеры, которые я видел, были взяты из process.env.IP, но мой интерфейс не размещен в Cloud9, поэтому у меня нет доступа к переменным среды. Так что еще раз спрашиваю, возможно ли это вообще? И если можно как это сделать? - person Dmitry Malugin; 17.08.2014
comment
Проблема насколько я понял в том, что url socialcrm-c9-painkkkiller.c9.io на самом деле не настоящий URL, я не могу пропинговать его, чтобы узнать IP. Таким образом, все соединения сокетов терпят неудачу. Я полагаю, что это невозможно сделать из соображений безопасности. - person Dmitry Malugin; 18.08.2014

Старый вопрос - но я борюсь с похожей проблемой. У меня нет репутации, чтобы добавить комментарий, но это должно ответить на ваш вопрос о получении IP-адреса в вашем приложении Cloud9.

Вы можете сослаться на process.env.IP, чтобы получить IP... и между прочим, вы можете сослаться на process.env.PORT, чтобы получить порт.

Взято с: https://community.c9.io/t/writing-a-node-js-app/1731

person JDev    schedule 27.10.2016