2016-11-10 55 views
4

我的程序似乎在Heroku上运行良好,但重新加载页面3-4次后,崩溃,并且出现错误H13: Connection closed without response。 但是,当我在计算机上运行它时,它工作得很好,没有任何错误。Heroku上的蒸气错误H13

这里是我的代码:

#if os(Linux) 
    import Glibc 
#else 
    import Darwin 
#endif 
import Vapor 

let arrayA: [String] = ["some strings here"] 

let arrayB: [String] = ["more strings there"] 

let arrayC: [String] = ["and some more here"] 

func buildName (from arrayA: [String], and arrayB: [String], and arrayC: [String]) -> String { 
    #if os(Linux) 
    let a: Int = Int(random() % (arrayA.count + 1)) 
    let b: Int = Int(random() % (arrayB.count + 1)) 
    let c: Int = Int(random() % (arrayC.count + 1)) 
    #else 
    let a: Int = Int(arc4random_uniform(UInt32(arrayA.count))) 
    let b: Int = Int(arc4random_uniform(UInt32(arrayB.count))) 
    let c: Int = Int(arc4random_uniform(UInt32(arrayC.count))) 
    #endif 

    return (arrayA[a] + " " + arrayB[b] + " " + arrayC[c]) 
} 

let defaultHead: String = "<head><meta charset='utf-8'></head>" 

//create Droplet object 
let drop = Droplet() 

// REGISTER Routes and handlers 
drop.get { req in 
    return buildName(from: arrayA, and: arrayB, and: arrayC) 
} 

// Start the server 
drop.run() 

我在做什么错?

+0

我认为这个错误不能来自此代码。改为检查Heroku设置。 – Moritz

+0

H13 - 连接没有响应而关闭 当您的Web dyno中的进程接受连接时会抛出此错误,但会在未写入任何内容的情况下关闭套接字。我不确定在这种情况下为什么会发生这种情况,但显然有些地方在重新加载之后有一个未写入的套接字连接。 –

+0

@EricAya我应该检查哪些设置?我没有真正改变它们(除了添加'https:// github.com/kylef/heroku-buildpack-swift.git'背包外)。 – Walkersneps

回答

0

let a: Int = Int(random() % (arrayA.count + 1))

这条线产生多个可以等于ArrayA.count。 所以,它可能会产生fatal error: Index out of range

所以,我认为这是主要原因。

0

arc4random_uniform在linux上不起作用。 改为使用此代码:

public static func randomInt(min: Int, max:Int) -> Int { 
     #if os(Linux) 
      return Glibc.random() % max 
     #else 
      return min + Int(arc4random_uniform(UInt32(max - min + 1))) 
     #endif 
    }