С Новым годом! Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216

Развёртывание Node.js приложения на удалённом хостинге

17.05.2016, 10:00. Показов 3986. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал знакомиться с Node.js совсем недавно. Сделал чат, где Node.js - это сервер, к которому подсоединяются клиенты на C# (с использованием SocketIoClientDotNetntDotNet)

На localhost работает. Теперь я хочу отправить кому-нибудь клиента и попробовать удалённо

Для начала посмотрите опытным глазом на мой сервер и напишите, пожалуйста, готов ли мой сервер к развёртыванию на удалённом хостинге:

server.js
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Подключаем нужные библиотеки
var io = require('socket.io')(process.env.PORT || 1337);
var shortid = require('shortid');
 
// Выводим сообщение, что клиент запущен
console.log('server started');
 
// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {
 
    // Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();
 
    // Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
    
    // Отправляем сообщение всем клиентам
    socket.broadcast.emit(thisClientId + ' is connected');
    
    // Принимаем сообщение и отсылаем остальным клиентам
    socket.on('message', function (data) {
        // Выводим принятое сообщение в консоль
        console.log('from server: ' + data);
        // Пересылаем принятое сообщение остальным клиентам
        socket.broadcast.emit('message', data);
    });
    
    // Выводим сообщение, что клиент отсоединился
    socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2016, 10:00
Ответы с готовыми решениями:

Развертывание Glassfish приложения на удаленном сервере
Добрый день! Ситуация следующая. Разработал приложение (форум) на Glassfish с использованием EJB, JPA, JSF. Имеется домен ,...

Ошибка application error. Развёртывание node.js на платформе heroku
Подскажите в чему меня ошибка? Я выполняю лабораторную работу (см. вордовский документ в архиве). Делаю все по порядку как написано....

Node js не работает на хостинге
Всем доброго времени суток. Возникла проблема с запуском node js серверной части на удаленном хостинге. Итак. Вчера оформил машину на...

16
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
17.05.2016, 14:27
Если сервер работает на локалхосте, то он будет работать и на удаленном. Разница-то какая?
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
17.05.2016, 15:41  [ТС]
Я немного слушал про SSL. Здесь он не нужен?

Добавлено через 1 минуту
Меня смутил такой пример - создание объекта "server" и сертификат:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var fs = require('fs');
var https = require('https');
 
var express = require('express');
var app = express();
 
const options = {
  key: fs.readFileSync(__dirname + '/SSL/NAME.key'),
  cert: fs.readFileSync(__dirname + '/SSL/NAME_NAME.crt')
};
 
var server = https.createServer(options, app);
var io = require('socket.io')(server);
 
app.use(express.static(__dirname));
app.use(express.static('Release'));
 
app.get('/', function(req, res){
    res.sendfile(__dirname + '/client.html');
});
 
io.on('connection', function(socket) {
  console.log('new connection');
  socket.emit('message', 'This is a message from the dark side.');
});
 
server.listen(80, '0.0.0.0', function() {
  console.log('server up and running');
});
0
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
17.05.2016, 15:45
8Observer8, ты должен сам знать нужен он или нет, в зависимости от твоей задачи.
Если тебе нужно защищенное соединение SSL, то используй.

Что смущает в примере?
JavaScript
1
2
  key: fs.readFileSync(__dirname + '/SSL/NAME.key'),
  cert: fs.readFileSync(__dirname + '/SSL/NAME_NAME.crt')
Пути к файлам сертификата. Сертификат надо покупать, после покупки составишь эти файлы.
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
17.05.2016, 16:26  [ТС]
Я думал, без сертификата вообще нельзя. Тогда буду без него делать. Попробую на heroku.com Есть ли более лучшие варианты бесплатных хостингов?

Пробовал свой сервер разворачивать на openshift.com, но выдаёт что "порт 8080 недоступен" в самом конце отсчёта. Больше ничего в отсчёте не сказано. Говорит, что закончилось неудачно. Пробовал несколько раз. Теперь попробую на heroku
0
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
17.05.2016, 16:34
8Observer8, поменяй 8080 на другой порт, проблемы нет
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
17.05.2016, 17:08  [ТС]
Цитата Сообщение от Randen Посмотреть сообщение
поменяй 8080 на другой порт, проблемы нет
У меня на сервере 1337 (в первом скрипте). Я не знаю почему он ругается на 8080. Сейчас попробую удалить приложение и заново создать
0
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
17.05.2016, 17:16
8Observer8, у тебя в коде это
JavaScript
1
process.env.PORT
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
17.05.2016, 18:24  [ТС]
Я попробовал написать вот так:
C#
1
var io = require('socket.io')(1337); // process.env.PORT ||
Так нельзя делать?

Мне нужен конкретный номер порта. Это порт указывается в клиенте

И опять я получаю такую ошибку на хостинге openshift:
remote: npm info ok
remote: Preparing build for deployment
remote: Deployment id is 4d869f29
remote: Activating deployment
remote: Starting NodeJS cartridge
remote: Tue May 17 2016 11:14:01 GMT-0400 (EDT): Starting application 'chat' ...
remote: Waiting for application port (8080) become available ...
remote: Application 'chat' failed to start (port 8080 not available)
remote: -------------------------
remote: Git Post-Receive Result: failure
remote: Activation status: failure
remote: Activation failed for the following gears:
remote: 573b28180c1e66905c00003f (Error activating gear: CLIENT_ERROR: Failed to execute: 'control start' for /var/lib/openshift/573b28180c1e66905c00003f/nodejs
remote: #<IO:0x00000001b1b380>
remote: #<IO:0x00000001b1b308>
remote: )
remote: Deployment completed with status: failure
remote: postreceive failed
To ssh://573b28180c1e66905c00003f@chat-8observer8.rhcloud.com/~/git/chat.git/
558cedd..ea8fead master -> master
Добавлено через 3 минуты
Вот все мои файлы:

.gitignore
node_modules/
Procfile
web: node server.js
package.json
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "name": "chat",
  "version": "1.0.0",
  "engines": {
    "node": "0.10",
    "npm": ">=1.3"
  },
  "dependencies": {
    "socket.io": "^1.4.6",
    "shortid": "^2.2.6"
  },
  "scripts": {
    "start": "node server.js"
  },
  "main": "server.js",
  "devDependencies": {},
  "repository": {
    "type": "git",
    "url": "ssh://573b28180c1e66905c00003f@chat-8observer8.rhcloud.com/~/git/chat.git/"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}
server.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Подключаем нужные библиотеки
var io = require('socket.io')(1337); // process.env.PORT || 
var shortid = require('shortid');
 
// Выводим сообщение, что клиент запущен
console.log('server started');
 
// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {
 
    // Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();
 
    // Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
    
    // Отправляем сообщение всем клиентам
    socket.broadcast.emit(thisClientId + ' is connected');
    
    // Принимаем сообщение и отсылаем остальным клиентам
    socket.on('message', function (data) {
        // Выводим принятое сообщение в консоль
        console.log('from server: ' + data);
        // Пересылаем принятое сообщение остальным клиентам
        socket.broadcast.emit('message', data);
    });
    
    // Выводим сообщение, что клиент отсоединился
    socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});
0
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
17.05.2016, 18:30
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Так нельзя делать?
Можно.

Значит как и хотел, пробуй другой хостинг. Я ставил на платном VPS reg.ru. Всё четко. Теперь там можно арендовать VPS сервер на OS Windows
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
18.05.2016, 12:25  [ТС]
Это удивительно. Я сделал точно по этой короткой инструкции: https://habrahabr.ru/sandbox/69602/

Только вместо index.js я создал файл server.js. Получилось, вывелось "Hello World!"

Теперь я копирую свой с форума из сообщения выше в server.js и меняю dependencies, получается файл:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
    "socket.io": "^1.4.6",
    "shortid": "^2.2.6"
  },
  "engines": {
    "node": "0.10.x",
    "npm": "1.3.x"
  }
}
Ввожу commit и push

Проверяю:
heroku ps

Выдаёт:
Free quota left: 17h 53m
=== web (Free): node server.js (1)
web.1: crashed 2016/05/18 12:19:30 +0300 (~ 38s ago)
И конечно же чат не работает и на самом сайте ошибка: https://infinite-shore-46770.herokuapp.com/

Вот какие файлы на текущий момент:

.gitignore
node_modules/
Procfile
web: node server.js
package.json
Кликните здесь для просмотра всего текста
JSON
1
2
3
4
5
6
7
8
9
10
11
12
{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
    "socket.io": "^1.4.6",
    "shortid": "^2.2.6"
  },
  "engines": {
    "node": "0.10.x",
    "npm": "1.3.x"
  }
}


server.js
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Подключаем нужные библиотеки
var io = require('socket.io')(1337); // process.env.PORT || 
var shortid = require('shortid');
 
// Выводим сообщение, что клиент запущен
console.log('server started');
 
// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {
 
    // Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();
 
    // Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
    
    // Отправляем сообщение всем клиентам
    socket.broadcast.emit(thisClientId + ' is connected');
    
    // Принимаем сообщение и отсылаем остальным клиентам
    socket.on('message', function (data) {
        // Выводим принятое сообщение в консоль
        console.log('from server: ' + data);
        // Пересылаем принятое сообщение остальным клиентам
        socket.broadcast.emit('message', data);
    });
    
    // Выводим сообщение, что клиент отсоединился
    socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.05.2016, 16:56
8Observer8, а этот хероку сам модули устанавливает?

и по идее у него где-то должен хранится лог падений...
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
18.05.2016, 18:54  [ТС]
Я ввёл команду:
Code
1
heroku logs --app wpfchat > r.txt
Вот что она выдала:
Кликните здесь для просмотра всего текста
2016-05-18T08:49:40.302530+00:00 heroku[slug-compiler]: Slug compilation started
2016-05-18T08:49:40.302542+00:00 heroku[slug-compiler]: Slug compilation finished
2016-05-18T08:49:42.977870+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T08:49:44.849255+00:00 app[web.1]: server started
2016-05-18T08:50:43.460712+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T08:50:43.460712+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T08:50:44.188739+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T08:50:44.176588+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T08:50:44.187551+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T08:50:47.435475+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T08:50:49.085306+00:00 app[web.1]: server started
2016-05-18T08:51:47.502428+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T08:51:47.502428+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T08:51:48.285386+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T08:51:48.295549+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T08:53:23.740906+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=wpfchat.herokuapp.com request_id=030d8631-6000-4cd2-930b-6a39defcb4c7 fwd="45.55.49.75" dyno= connect= service= status=503 bytes=
2016-05-18T08:53:25.305267+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=wpfchat.herokuapp.com request_id=2f748b84-f0f1-4538-b073-1d98c176cb4f fwd="45.55.49.75" dyno= connect= service= status=503 bytes=
2016-05-18T08:56:08.504707+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=wpfchat.herokuapp.com request_id=8d3f607d-e674-4681-bdd1-760b8b859c01 fwd="45.55.49.75" dyno= connect= service= status=503 bytes=
2016-05-18T08:56:09.539168+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=wpfchat.herokuapp.com request_id=3e74eba5-4af9-41b5-b04e-c38d3b0928e2 fwd="45.55.49.75" dyno= connect= service= status=503 bytes=
2016-05-18T09:13:28.291722+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T09:13:30.613823+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T09:13:32.709205+00:00 app[web.1]: server started
2016-05-18T09:14:30.806740+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T09:14:30.806828+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T09:14:31.509982+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T09:14:31.523349+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T10:00:18.068431+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T10:00:20.537657+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T10:00:22.111785+00:00 app[web.1]: server started
2016-05-18T10:01:20.955059+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T10:01:20.954893+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T10:01:21.756981+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T10:01:21.786423+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T11:22:48.898195+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T11:22:51.156336+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T11:22:53.341331+00:00 app[web.1]: server started
2016-05-18T11:23:51.852364+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T11:23:51.852556+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T11:23:52.699396+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T11:23:52.706625+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T14:05:40.250940+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T14:05:42.694476+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T14:05:44.459536+00:00 app[web.1]: server started
2016-05-18T14:06:42.966326+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-05-18T14:06:42.966107+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-05-18T14:06:43.933920+00:00 heroku[web.1]: Process exited with status 137
2016-05-18T14:06:43.936726+00:00 heroku[web.1]: State changed from starting to crashed


Добавлено через 3 минуты
Я кажется понял в чём ошибка:

Heroku dynamically assigns your app a port, so you can't set the port to a fixed number. Heroku adds the port to the env, so you can pull it from there. Switch your listen to this:
Добавлено через 4 минуты
Сервер я поднял:
D:\_Projects\Node.js\wpfchathabra>heroku ps
Free quota left: 17h 52m
=== web (Free): node server.js (1)
web.1: up 2016/05/18 18:36:13 +0300 (~ 20s ago)
Как можно узнать номер порта на сервере?

Добавлено через 16 минут
Я написал, но ничего не выводится:

JavaScript
1
2
3
4
5
6
7
8
9
var express = require("express");
 
var app = express();
 
var port = process.env.PORT || 5000;
 
app.get('/', function(request, response) {
  response.send(port);
});
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
18.05.2016, 22:19  [ТС]
У меня такой сейчас скрипт:
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Подключаем нужные библиотеки
var io = require('socket.io')(process.env.PORT || 1337);
var shortid = require('shortid');
var express = require("express");
 
var app = express();
app.use(express.logger());
 
app.get('/', function(request, response) {
  response.send('Hello World!');
});
 
var port = process.env.PORT || 1337;
 
app.listen(port, function() {
  console.log("Listening on " + port);
});
 
// Выводим сообщение, что клиент запущен
console.log('server started');
 
// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {
 
    // Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();
 
    // Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
    
    // Отправляем сообщение всем клиентам
    socket.broadcast.emit(thisClientId + ' is connected');
    
    // Принимаем сообщение и отсылаем остальным клиентам
    socket.on('message', function (data) {
        // Выводим принятое сообщение в консоль
        console.log('from server: ' + data);
        // Пересылаем принятое сообщение остальным клиентам
        socket.broadcast.emit('message', data);
    });
    
    // Выводим сообщение, что клиент отсоединился
    socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});


Ввожу команду:
heroku logs --tail > r.txt
Выдаёт отсчёт, я не понимаю в чём ошибка:
Кликните здесь для просмотра всего текста
2016-05-18T15:58:37.064208+00:00 app[web.1]: at listen (net.js:1065:10)
2016-05-18T15:58:37.061529+00:00 app[web.1]: events.js:72
2016-05-18T15:58:37.061809+00:00 app[web.1]: ^
2016-05-18T15:58:37.061796+00:00 app[web.1]: throw er; // Unhandled 'error' event
2016-05-18T15:58:37.064209+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:529:24)
2016-05-18T15:58:37.064209+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:10:5)
2016-05-18T15:58:37.064210+00:00 app[web.1]: at Module._compile (module.js:456:26)
2016-05-18T15:58:37.064211+00:00 app[web.1]: at Module.load (module.js:356:32)
2016-05-18T15:58:37.064212+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
2016-05-18T15:58:37.064210+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2016-05-18T15:58:37.064208+00:00 app[web.1]: at Server.listen (net.js:1139:5)
2016-05-18T15:58:37.061171+00:00 app[web.1]:
2016-05-18T15:58:37.581219+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2016-05-18T15:58:37.898770+00:00 heroku[web.1]: Process exited with status 8
2016-05-18T15:58:37.914406+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T15:58:37.913077+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T15:58:38.803593+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T15:58:39.636455+00:00 heroku[web.1]: Process exited with status 143
2016-05-18T15:58:40.601513+00:00 app[web.1]: server started
2016-05-18T15:58:40.602189+00:00 app[web.1]:
2016-05-18T15:58:40.604631+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:10:5)
2016-05-18T15:58:40.604630+00:00 app[web.1]: at listen (net.js:1065:10)
2016-05-18T15:58:40.604632+00:00 app[web.1]: at Module._compile (module.js:456:26)
2016-05-18T15:58:40.604621+00:00 app[web.1]: Error: listen EADDRINUSE
2016-05-18T15:58:40.602691+00:00 app[web.1]: ^
2016-05-18T15:58:40.604630+00:00 app[web.1]: at Server.listen (net.js:1139:5)
2016-05-18T15:58:40.604628+00:00 app[web.1]: at errnoException (net.js:905:11)
2016-05-18T15:58:40.604629+00:00 app[web.1]: at Server._listen2 (net.js:1043:14)
2016-05-18T15:58:40.602464+00:00 app[web.1]: events.js:72
2016-05-18T15:58:40.602682+00:00 app[web.1]: throw er; // Unhandled 'error' event
2016-05-18T15:58:40.604633+00:00 app[web.1]: at Module.load (module.js:356:32)
2016-05-18T15:58:40.604631+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:529:24)
2016-05-18T15:58:40.604633+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2016-05-18T15:58:40.604634+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
2016-05-18T15:58:41.412567+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T15:58:41.384782+00:00 heroku[web.1]: Process exited with status 8
2016-05-18T15:58:53.059953+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=infinite-shore-46770.herokuapp.com request_id=ce4c99be-aa2c-4cb6-94fb-593f7e6633be fwd="104.236.70.228" dyno= connect= service= status=503 bytes=
2016-05-18T16:21:46.914726+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T16:21:49.491243+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T16:21:51.968205+00:00 app[web.1]: ^
2016-05-18T16:21:51.971278+00:00 app[web.1]: at errnoException (net.js:905:11)
2016-05-18T16:21:51.966143+00:00 app[web.1]: server started
2016-05-18T16:21:51.967812+00:00 app[web.1]: events.js:72
2016-05-18T16:21:51.968195+00:00 app[web.1]: throw er; // Unhandled 'error' event
2016-05-18T16:21:51.971262+00:00 app[web.1]: Error: listen EADDRINUSE
2016-05-18T16:21:51.967312+00:00 app[web.1]:
2016-05-18T16:21:51.971279+00:00 app[web.1]: at Server._listen2 (net.js:1043:14)
2016-05-18T16:21:51.971280+00:00 app[web.1]: at listen (net.js:1065:10)
2016-05-18T16:21:51.971282+00:00 app[web.1]: at Module._compile (module.js:456:26)
2016-05-18T16:21:51.971280+00:00 app[web.1]: at Server.listen (net.js:1139:5)
2016-05-18T16:21:51.971283+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2016-05-18T16:21:51.971281+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:10:5)
2016-05-18T16:21:51.971281+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:529:24)
2016-05-18T16:21:51.971283+00:00 app[web.1]: at Module.load (module.js:356:32)
2016-05-18T16:21:51.971284+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
2016-05-18T16:21:53.067258+00:00 heroku[web.1]: Process exited with status 8
2016-05-18T16:21:53.053718+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T16:34:33.870320+00:00 heroku[slug-compiler]: Slug compilation finished
2016-05-18T16:34:33.870315+00:00 heroku[slug-compiler]: Slug compilation started
2016-05-18T16:34:33.701700+00:00 heroku[api]: Deploy b8a2955 by 8observer8@gmail.com
2016-05-18T16:34:33.701745+00:00 heroku[api]: Release v9 created by 8observer8@gmail.com
2016-05-18T16:34:34.218281+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T16:34:35.003254+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T16:34:37.643156+00:00 app[web.1]: server started
2016-05-18T16:34:37.644896+00:00 app[web.1]: ^
2016-05-18T16:34:37.646944+00:00 app[web.1]: at listen (net.js:1065:10)
2016-05-18T16:34:37.644557+00:00 app[web.1]: events.js:72
2016-05-18T16:34:37.644810+00:00 app[web.1]: throw er; // Unhandled 'error' event
2016-05-18T16:34:37.646934+00:00 app[web.1]: Error: listen EADDRINUSE
2016-05-18T16:34:37.646946+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:529:24)
2016-05-18T16:34:37.644234+00:00 app[web.1]:
2016-05-18T16:34:37.646943+00:00 app[web.1]: at errnoException (net.js:905:11)
2016-05-18T16:34:37.646944+00:00 app[web.1]: at Server._listen2 (net.js:1043:14)
2016-05-18T16:34:37.646945+00:00 app[web.1]: at Server.listen (net.js:1139:5)
2016-05-18T16:34:37.646947+00:00 app[web.1]: at Module._compile (module.js:456:26)
2016-05-18T16:34:37.646948+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2016-05-18T16:34:37.646946+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:15:5)
2016-05-18T16:34:37.646948+00:00 app[web.1]: at Module.load (module.js:356:32)
2016-05-18T16:34:37.646949+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
2016-05-18T16:34:38.409551+00:00 heroku[web.1]: Process exited with status 8
2016-05-18T16:34:38.417610+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-18T16:34:38.418864+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-18T16:34:39.544674+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T16:34:42.313926+00:00 app[web.1]:
2016-05-18T16:34:42.314652+00:00 app[web.1]: events.js:72
2016-05-18T16:34:42.315606+00:00 app[web.1]: ^
2016-05-18T16:34:42.318967+00:00 app[web.1]: Error: listen EADDRINUSE
2016-05-18T16:34:42.312375+00:00 app[web.1]: server started
2016-05-18T16:34:42.318974+00:00 app[web.1]: at errnoException (net.js:905:11)
2016-05-18T16:34:42.315266+00:00 app[web.1]: throw er; // Unhandled 'error' event
2016-05-18T16:34:42.318976+00:00 app[web.1]: at listen (net.js:1065:10)
2016-05-18T16:34:42.318977+00:00 app[web.1]: at Function.app.listen (/app/node_modules/express/lib/application.js:529:24)
2016-05-18T16:34:42.318977+00:00 app[web.1]: at Server.listen (net.js:1139:5)
2016-05-18T16:34:42.318978+00:00 app[web.1]: at Object.<anonymous> (/app/server.js:15:5)
2016-05-18T16:34:42.318979+00:00 app[web.1]: at Module._compile (module.js:456:26)
2016-05-18T16:34:42.318981+00:00 app[web.1]: at Function.Module._load (module.js:312:12)
2016-05-18T16:34:42.318980+00:00 app[web.1]: at Module.load (module.js:356:32)
2016-05-18T16:34:42.318975+00:00 app[web.1]: at Server._listen2 (net.js:1043:14)
2016-05-18T16:34:42.318980+00:00 app[web.1]: at Object.Module._extensions..js (module.js:474:10)
2016-05-18T16:34:43.408171+00:00 heroku[web.1]: Process exited with status 8
2016-05-18T16:34:43.425870+00:00 heroku[web.1]: State changed from starting to crashed
Terminate batch job (Y/N)?


Добавлено через 5 минут
Как кажется, понял в чём ошибка:
EADDRINUSE means that the port number which listen() tries to bind the server to is already in use.
Добавлено через 1 час 25 минут
В общем, я продвинулся. Мне удалось запустить сервер и вывести порт:

2016-05-18T17:53:45.494172+00:00 heroku[web.1]: Starting process with command `node server.js`
2016-05-18T17:53:48.096455+00:00 app[web.1]: server started
2016-05-18T17:53:48.096937+00:00 app[web.1]: Port: 34045
2016-05-18T17:53:49.122614+00:00 heroku[web.1]: State changed from starting to up
Я в реальном времени могу в консоле смотреть, что происходит на сервере такой командой:
heroku logs --tail
При перезагрузки страницы выдаётся такое сообщение (2 раза, потому что 2 раза перезагружал)
2016-05-18T17:53:49.481801+00:00 heroku[router]: at=info method=GET path="/" host=infinite-shore-46770.herokuapp.com request_id=e6d53d7d-6fa4-4af7-bfa6-095a4e640396 fwd="
104.236.70.228" dyno=web.1 connect=0ms service=5ms status=404 bytes=115
2016-05-18T17:59:15.921414+00:00 heroku[router]: at=info method=GET path="/" host=infinite-shore-46770.herokuapp.com request_id=296cd108-5af3-4bcd-91ea-9dd2b588c133 fwd="
104.236.70.228" dyno=web.1 connect=1ms service=2ms status=404 bytes=115
А что это за IP в отсчёте выше? fwd="104.236.70.228"

Я пытаюсь с ним соединиться с сервером, но не получается:

C#
1
socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("http://104.236.70.228:34045");
Пытался ещё использовать такой онлайн конвёртер, он переводит так DNS в IP:

infinite-shore-46770.herokuapp.com
-->
50.19.209.3

Пробовал так соединиться:

C#
1
socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("http://50.19.209.3:34045");
Но тоже не вышло

Вот такой у меня скрипт на сервере:
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Подключаем нужные библиотеки
var io = require('socket.io')(process.env.PORT || 1337);
var shortid = require('shortid');
 
// Выводим сообщение, что клиент запущен
console.log('server started');
 
// Выводим номер порта
var port = process.env.PORT || 1337;
console.log("Port: " + port);
 
// Это функция вызывается, как только подключается клиент
io.on('connection', function (socket) {
 
    // Генерируем ID для подсоединившегося клиента, т.е. для текущего
    var thisClientId = shortid.generate();
 
    // Выводим ID текущего клиента
    console.log('client connected, broadcasting spawn, id: ', thisClientId);
    
    // Отправляем сообщение всем клиентам
    socket.broadcast.emit(thisClientId + ' is connected');
    
    // Принимаем сообщение и отсылаем остальным клиентам
    socket.on('message', function (data) {
        // Выводим принятое сообщение в консоль
        console.log('from server: ' + data);
        // Пересылаем принятое сообщение остальным клиентам
        socket.broadcast.emit('message', data);
    });
    
    // Выводим сообщение, что клиент отсоединился
    socket.on('disconnect', function () {
        console.log('client disconnected');
    });
});


Добавлено через 1 час 8 минут
Я не знаю как получить IP. Пробовал через ping, но не катит
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
18.05.2016, 23:16
8Observer8, у объекта http.Server есть такая прекрасная вещь как _connectionKey
честно не знаю почему, но у меня там ip всегда null, но думаю у тебя может получится что-то путное

вот как использую я
JavaScript
1
log(`http server got up with pid: ${process.pid}; connection: ${httpS._connectionKey} ${figure.tick}`);
а вот что у меня выводится:
Миниатюры
Развёртывание Node.js приложения на удалённом хостинге  
0
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
19.05.2016, 13:41  [ТС]
Цитата Сообщение от BANO Посмотреть сообщение
у объекта http.Server есть такая прекрасная вещь как _connectionKey
Как получить этот объект?

Я случайно нашёл библиотеку: https://github.com/indutny/node-ip

Она позволяет так вывести IP:

var ip = require('ip');
console.log("IP: " + ip.address());
В логи выводится:
IP: 172.16.253.86
Port: 48357

Я делаю запрос:
C#
1
socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("http://172.16.253.86:48357");
Но опять молчок. В чём может быть дело?

Добавлено через 6 минут
Чтобы не было у вас сомнений, что клиентский код нерабочий, то
прямо сейчас я стартонул server.js локально и выполнил запрос:
C#
1
socket = Quobject.SocketIoClientDotNet.Client.IO.Socket("http://localhost:1337");
У меня вывелось в консоль:
server started
IP: *мой ip*
Port: 1337
client connected, broadcasting spawn, id: SkuF98qf
Добавлено через 13 часов 27 минут
Наверное, я все айпишники перепробовал, но не работает. Есть ли предположения, как заставить работать мой чат?

Можете посоветовать бесплатный (или с триалом) сервис куда бы я мог залить свой сервер, чтобы гарантированно работало?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
19.05.2016, 18:16
8Observer8, мне кажется, это потому, что socket.io сделан для websocket-ов, а вы пытаетесь стандартный подключить к нему
попробуйте сделать это на стандартных сокетах из модуля net
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2016, 18:16
Помогаю со студенческими работами здесь

Запустить скрипт на node на хостинге
Подскажите,пожалуйста,как запустить скрипт на node на хостинге. Понял так!!! При написании скриптов на Node.JS WEB-сервер пишется...

Как реализовать скрипт, который будет находится на удаленном хостинге...
Подскажите как реализовать скрипт, который будет находится на удаленном хостинге и закачивать файлы из интернета на ftp narod'а. Вот...

Какие средства работы с Node.js на хостинге?
Всем привет! Я новичок, решил начать изучать node.js купил хостинг там есть консоль и еще научился подключаться по ssh Но у...

Развертывание приложения Qt
Собрал проект динамически. В папку в исполняемым файлом кинул все DLL(QtGui,QtCore4),и папку с картинками для программы. На целевой машине...

Развертывание веб приложения
Подскажите что необходимо для развертывание веб приложения. Ситуация такая, железо есть, планирую купить домен и прикрутить его к своему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru