2015-07-19 2 views
0

У меня есть 3 файла:Deploy маршрут в Node.js приложения в Heroku без express.js

  1. server.js содержащих Node.js сервер (с помощью WebSocket-узла)
  2. client.js содержащий WebSocket код
  3. frontend.html содержащий содержимое html, содержит файл client.js.

package.json:

{ 
    "name": "kapp", 
    "version": "1.0.0", 
    "description": "Lightweight peer to peer", 
    "main": "frontend.html", 
    "scripts": { 
    "test": "node server.js" 
    }, 
    "engines": { 
    "node": "0.10.x" 
    }, 
    "author": "Kaustav Ray", 
    "license": "MIT", 
    "dependencies": { 
    "websocket": "^1.0.19" 
    } 
} 

server.js

var WebSocketServer = require('websocket').server; 
var http = require('http'); 

var server = http.createServer(function(request, response) { 

}); 
server.listen(1337, function() { }); 


wsServer = new WebSocketServer({ 
    httpServer: server 
}); 


wsServer.on('request', function(request) { 
    var connection = request.accept(null, request.origin); 


    connection.on('message', function(message) { 
     if (message.type === 'utf8') { 

     } 
    }); 

    connection.on('close', function(connection) { 

    }); 
}); 

client.js

$(function() { 

    window.WebSocket = window.WebSocket || window.MozWebSocket; 

    var connection = new WebSocket('ws://127.0.0.1:1337'); 

    connection.onopen = function() { 

    }; 

    connection.onerror = function (error) { 

    }; 

    connection.onmessage = function (message) { 

     try { 
      var json = JSON.parse(message.data); 
     } catch (e) { 
      console.log('This doesn\'t look like a valid JSON: ', message.data); 
      return; 
     } 
     // handle incoming message 
    }; 
}); 

Локальная структура папок:

  1. .git
  2. node_modules // содержащий WebSocket
  3. client.js
  4. frontend.html
  5. server.js
  6. package.json

Но как-то мое приложение не работает и показывает ошибку приложения!

Я хочу сначала запустить сервер nodejs и открыть frontend.html.

Поскольку я начинаю с nodejs и heroku в первый раз, не могу понять точную проблему!

  1. Есть ли проблемы при маршрутизации или другие вещи, вызывающие эту ошибку?
  2. Является ли express.js обязательным для маршрутизации?
+0

Не могли бы вы показать нам код в 'server.js'? – Tholle

+0

Я вставил базовый skelleton сервера и клиента + обновил package.json, и он отлично работает на локальном компьютере, но сталкивается с проблемами в герою! –

ответ

1

Heroku требует, чтобы ваши либо обеспечить Procfile, которая является простым файлом, который говорит Heroku, как на самом деле начать свое приложение, или указать scripts.start в вашем package.json.

// Procfile 
web: node server.js 

// package.json 
"scripts": { 
    "start": "node server.js" 
}, 

https://devcenter.heroku.com/articles/nodejs-support#default-web-process-type https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

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