Два сервера node.js?

Я хочу запустить два node.js httpservers на разных портах:

var http = require('http'); var dbserver = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('<html><body><h2 align=center>TEST index.html.</h2></body></html>'); res.end(); }); dbserver.listen(8888); var s = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('hello world'); res.end(); }); s.listen(8080); 

Я хочу сделать приложение для Android, которое будет подключаться к моему серверу Node.js на порту 8888 на хостинге AppFog, отправить сообщение на сервер и получить от него ответ. И если я открою свой сервер из браузера, я получаю просто простую html-страницу. Но мой код не работает. Зачем?

В AppFog вы можете увидеть документацию для запуска приложений Node здесь: http://docs.appfog.com/frameworks/node

Одна важная часть – как определить, к какому порту привязать. В вашем примере кода у вас есть s.listen (8080); Но порт для указания на самом деле находится в env var:

 s.listen(process.env.VCAP_APP_PORT || 8080); 

AppFog в настоящее время не поддерживает открытие двух портов для одного и того же приложения, поэтому вам придется разделить его на два приложения и иметь второй, аналогично связанный с env var:

 dbserver.listen(process.env.VCAP_APP_PORT || 8888); 

AppFog будет поддерживать WebSocket в течение нескольких месяцев, но он недоступен сегодня.

Ну, хорошо, хорошо, у меня был ответ электронной почты от AppFog, это звучит так:

// ———————————————— ———————-

Joe, Sep 19 12:30 (PDT):

Здравствуй!

К сожалению, в AppFog поддерживается только HTTP-трафик, поэтому веб-порты и трафик UDP не будут работать. Поддержка Websocket находится в нашей дорожной карте, поэтому, пожалуйста, следите за обновлениями!

Поддержка Joe AppFog

// ———————————————— ———————

Поэтому проблема была не в Node.js, а не в моем коде, а в AppFog. Большое вам спасибо за вашу помощь!

Конечно, вы можете запускать два разных сервера на двух разных портах в одном узле, но если вы хотите, чтобы ваш клиентский код обращался к ним обоим, вы, скорее всего, столкнетесь с проблемами с одинаковым исходным кодом (например, в браузере Запущенный код, загруженный с одного сервера, в общем случае не сможет выполнить запрос AJAX на другой сервер, поскольку два разных порта на одном и том же URL-адресе считаются двумя разными источниками). Возможность подключения к межсетевому соединению будет ограничена запросами сценариев (включая запросы JSONP) и подключений к Websocket (хотя помните, что если вы используете socket.io, а клиент не поддерживает Websockets, резервные транспортные методы, которые сокет .io не обязательно будет работать с перекрестным происхождением.