收听方法
public void Download()
{
Task.Run(() =>
{
HttpWebRequest request = null;
try
{
lock (GlobalLock.Locker)
{
Status = State.SendRequest;
request = Info != null ?
RequestHelper.CreateHttpRequest(Info, Range.Start, Range.End, BeforeSendingRequest) :
RequestHelper.CreateHttpRequest(Url, BeforeSendingRequest);
Status = State.GetResponse;
}
using (var response = Info != null ?
RequestHelper.GetRangedResponse(Info, Range.Start, Range.End, request, AfterGettingResponse) :
request.GetResponse() as HttpWebResponse)
{
ResponseReceived.Raise(this, new ResponseReceivedEventArgs(response));
using (var fileStream = File.Create(Range.FilePath))
{
Status = State.GetResponseStream;
var str = response.GetResponseStream();
{
var buffer = new byte[2048];
int bytesRead = 0;
while (true)
{
//lock (GlobalLock.Locker)
{
bytesRead = str.Read(buffer, 0, buffer.Length);
if (Info.ContentSize > 0)
bytesRead = (int)Math.Min(Range.Size - Range.TotalBytesReceived, bytesRead);
if (bytesRead <= 0)
break;
if (stopEmergent)
{
break;
}
if (Info != null && Info.ContentSize > 0 && Range.IsDownloaded)
{
break;
}
Range.Status = Status = State.Downloading;
fileStream.Write(buffer, 0, bytesRead);
Range.TotalBytesReceived += bytesRead;
ProgressChanged.Raise(this, EventArgs.Empty);
}
}
}
}
}//System.ObjectDisposedException is here and I don't understand why
if (Info.ContentSize < 1 || Range.IsDownloaded)
{
Range.Status = Status = State.Completed;
Completed.Raise(this, EventArgs.Empty);
}
else if (stopEmergent)
{
Range.Status = Status = State.Stopped;
Stopped.Raise(this, EventArgs.Empty);
}
}
catch (Exception e)
{
if (stopEmergent)
{
Range.Status = Status = State.Stopped;
Stopped.Raise(this, EventArgs.Empty);
}
else
{
Range.Status = Status = State.Failed;
Failed.Raise(this, new ErrorEventArgs(e));
}
}
finally
{
if (request != null)
request.Abort();
}
});
}
Procfile
let port = process.env.PORT;
if (port == null || port == "")
{port = 3000; }
app.listen(port);
app.listen(port, function() {
console.log("Server has started successfully!");
});
Package.json
web: node app.js
在heroku上部署应用程序
This is being displayed when I am visiting the specified address in my terminal
在终端中记录错误
{
"name": "todolist-v1",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"engines": {
"node": "12.18.0"
},
"dependencies": {
"body-parser": "^1.18.3",
"ejs": "^2.6.1",
"express": "^4.16.3",
"lodash": "^4.17.19",
"mongoose": "^5.9.26"
}
}
正在显示以上消息
我是Heroku的新手,对此了解不多。如果有人引导我完成成功的应用程序部署道路,我们将不胜感激。
答案 0 :(得分:0)
您两次拨打app.listen
。没必要错误代码EADDRINUSE
告诉您,您正在尝试侦听已经使用的地址,如果您两次调用app.listen
,则会发生这种情况。只需调用一次,就像这样:
let port = process.env.PORT;
if (port == null || port == "") { port = 3000; }
app.listen(port, function() {
console.log("Server has started successfully!");
});