![](/img/trans.png)
[英]How to run Argon2 on a Node.js server on Google Cloud Platform?
[英]How to run server on Google Cloud Function - with Node.js
我有在本地完美運行的NODE.js代碼(127.0.0.1:CUSTOM_PORT)。 但是現在我想對其進行設置以在Google Cloud Function上運行它。
這是我用來在本地運行代碼的代碼:
function connect_to_server() {
const PORT = process.env.PORT || 8080;
app.listen(PORT,'127.0.0.1',function () {
console.log('---> SERVER IS RUNNNG <---')
})
}
有人知道如何使用Google Cloud Functions設置正在運行的服務器嗎? 我應該使用哪個端口以及NODE.JS內的URL? 還是我根本不需要使用它,因為GCF最初已經為我設置了服務器?
GCF提供可以被觸發的觸發URL,但仍然無法使用。
沒有app.listen()
完整功能
// CONFIGURATION
const express = require('express')
const app = express()
const config = require('./config')
const bodyParser = require('body-parser')
const moment = require('moment')
const sql = require("mssql")
const jwt = require('jwt-simple')
const compression = require('compression')
function token(token) {
var secret = Buffer.from('xxx', 'hex')
return jwt.decode(token, secret)
}
function sql_puller(res, req) {
sql.connect(config, function (err) {
if (err) {
console.log(err)
res.send(err.code)
}
const request = new sql.PreparedStatement()
const {
x
} = req.body
let newProps = {}
x.forEach(filters => {
newProps[filters.x] = filters.x
})
const isValidInput = validateInput(x, x, x, res)
if (!isValidInput) {
return
}
request.input('1', sql.VarChar(1))
request.input('2', sql.VarChar(1))
request.input('3', sql.VarChar(1))
sqlQuery = `XXXXXX`
request.prepare(sqlQuery, err => {
if (err) {
console.log(err)
res.send(err.code)
return
}
request.execute({
iso: x,
start: x,
end: x
}, (err, recordset) => {
request.unprepare(err => {
if (err) {
console.log(err)
res.send(err.code)
return
}
})
if (err) {
console.log(err)
res.send(err.code)
return
}
res.json(recordset)
sql.close()
})
})
})
sql.on('close', function (err) {
console.log('SQL Connection Closed.', err)
})
sql.on('error', function (err) {
sql.close()
console.log('SQL error occurred.', err)
})
}
exports.main = function main() {
app.use(compression())
app.use(bodyParser.json())
app.post('/', function (req, res) {
try {
res.setHeader('Cache-Control', 'public, max-age=3600')
var decodedToken = token(req.body['Token'])
console.log(req.body)
console.log('Successefully connected - token accepted')
// connect to your databas
if (decodedToken == "XXXXXX") {
sql_puller(res, req)
} else {
console.log('Incorrect Token')
}
} catch (err) {
if (err) {
console.log(err)
res.send('Invalid Token')
return
}
}
})
}
您無法以自己的方式設計它。 Google Cloud Functions具有最大的運行時間,然后該函數終止。 截至今天,該限制為540秒。 雲功能由外部進程調用,雲功能不等待某人連接到它們(例如,他們不聽,他們沒有睡着)。 HTTP觸發器是一個例外,但這不適用於展示網站,但可用於操作。
有些公司使用Cloud Functions,Cloud Datastore和Cloud Storage來運營整個網站。 魔術使用的是API網關產品。 API網關提供客戶訪問的URL www.example.com 。 然后,API網關調用Cloud Functions來處理請求。 您為無服務器網站上的每個頁面創建到Cloud Functions的相似映射。
許多開發人員使用Google App Engine完成您要完成的工作。 成本極低,非常容易開發。 供您考慮的另一種出色的Google產品是Google Firebase 。 Google還有許多其他非無服務器的產品,例如Compute Engine上的Container和Kubernetes 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.