Long polling 膝关节炎2路由器如何进行长轮询请求
我想提出一个很长的池请求。所以我想接受一个请求并在延迟后发送一个响应。可能吗 我正在尝试使用async/await synax,但它对我不起作用(我在客户端遇到了一个错误404) 非常感谢你的帮助 这是我的服务器Long polling 膝关节炎2路由器如何进行长轮询请求,long-polling,koa2,Long Polling,Koa2,我想提出一个很长的池请求。所以我想接受一个请求并在延迟后发送一个响应。可能吗 我正在尝试使用async/await synax,但它对我不起作用(我在客户端遇到了一个错误404) 非常感谢你的帮助 这是我的服务器 import 'babel-polyfill'; import Koa from 'koa'; import Router from "koa-router"; import fs from "fs"; const router = new Router(); const co
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) 一般来说,是的。这是可能的 代码中的问题是,
wait
完全基于承诺。因此,需要将超时函数封装到承诺中。类似这样的方法可能会奏效:
...
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);
})
...
一般来说,是的。这是可能的 代码中的问题是,
wait
完全基于承诺。因此,需要将超时函数封装到承诺中。类似这样的方法可能会奏效:
...
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);
})
...