2016-12-23 7 views
0

長いプーリングリクエストを作成したい。だから、私は少し遅れて依頼を受け、応答を送ってほしい。出来ますか? Koa 2ルータ長いポーリングリクエストを作成する方法

は、私は非同期/のawait SYNAX使用しようとしているが、それは私のために働いていないです任意の助け

多くのおかげで(私は、クライアント上でエラー404を得ました)。ここで

は、私のサーバーは

import 'babel-polyfill'; 
import Koa from 'koa'; 
import Router from "koa-router"; 

import fs from "fs"; 


const router = new Router(); 

const convert = require('koa-convert') 
const serve = require("koa-static"); 

const app = new Koa(); 


router 
    .get('/*', async function (ctx, next) { 



      ctx.response.type = 'text/html; charset=utf-8'; 

      /* await (() => { 
       setTimeout(() => {ctx.body = fs.readFileSync(__dirname + "/public/index.html")}, 1000) 
      })(); */ 

      //ctx.body = fs.readFileSync(__dirname + "/public/index.html"); 


    }) 

app.use(convert(serve(`${__dirname}/public`))) 
app.use(router.routes()).use(router.allowedMethods()); 

app.listen(3000)です。

答えて

3

通常、はいです。これは可能です。

あなたのコードの問題は、awaitが約束に基づいていることです。だからあなたのタイムアウト機能は、約束にカプセル化される必要があります。このようなものが動作する可能性があります。

... 
function delayed(ctx, ms) { 
    return new Promise((resolve, reject) => { 
     setTimeout(function() { 
      ctx.body = fs.readFileSync(__dirname + "/public/index.html") 
      resolve(); 
     }, ms); 
    }) 
} 

router.get('/*', async function (ctx, next) { 
    ctx.response.type = 'text/html; charset=utf-8'; 
    await delayed(ctx, 1000); 
}) 
... 
+0

ありがとうSebastian。 – Velidan

関連する問題