node.js + herokuの構成でwebアプリを作っており、アプリ側で生成したファイルをダウンロードしたいのですが、うまくできません。
ローカル上で実行した場合はダウンロードできるのですが、heroku上では全く反応がなく、うまくいきません。エラー文も出ず無反応です。
そもそもやり方が間違えているような気がしますが、何かいい方法はありませんでしょうか?
下のコードには書いてませんが、ファイルを生成する処理は既に完成しているので、node.js+herokuの構成はなるべく崩したくありません。
よろしくお願いいたします。
###app.js (node.js)
var port = process.env.PORT || 5000, http = require("http"), express = require("express"), app = express(), server = http.createServer(app), io = require('socket.io').listen(server), fs = require('fs'); app.use(express.static(__dirname + "/html/")) server.listen(port); console.log("http server listening on %d", port); //--------------------------------------------------- // socket.io //--------------------------------------------------- io.sockets.on('connection', function(socket) { socket.on("emit_download", function(data) { var _http = require('http'); var request = _http.get("https://xxxxx.herokuapp.com/img/file.jpg",function(response) { socket.emit('file_status', 'begin download function'); if (response.statusCode === 200) { socket.emit('file_status', 'try download'); var file = fs.createWriteStream("test.jpg"); response.pipe(file); socket.emit('file_status', 'download completed'); } request.setTimeout(8000, function() { request.abort(); }); }) }) })
###index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset=UTF-8 /> <title>Untitled Document</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript" src="js/main.js"></script> </head> <body> <div id="download" style="background-color:#F00;">download</div> </body> </html>
###main.js
$(document).ready(function() { console.log("main"); var socket = io.connect("https://xxxxx.herokuapp.com/"); var elDownload = document.getElementById('download'); $('#download').on('click', function() { console.log("download"); socket.emit('emit_download', "test"); }) })
ローカルファイルの生成はどうやっていますか?同一のweb dyno内に生成出来ていますか?問題の切り分けとして、ファイル取得以外の文字列取得等は正常に動作していますか?
あなたの回答
tips
プレビュー