微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当多个用户同时发送 POST 请求时,代理服务器发送相同的响应 Sphere-engine Api 的代理服务器

如何解决当多个用户同时发送 POST 请求时,代理服务器发送相同的响应 Sphere-engine Api 的代理服务器

我正在使用 sphere 引擎编译器 API 构建一个 Online Code editor for Java

我使用 Sphere Engine Compilers APIExpress 创建了一个代理服务器。并使用此代理服务器在客户端(前端)获取数据(编译后的程序输出)。但是当多个用户同时向代理服务器发送 post 请求时,所有用户都从代理服务器得到相同的响应。

const express = require("express");
const cors = require("cors");
require('dotenv').config();
const fetch = require('node-fetch');
const Bluebird = require('bluebird');
fetch.Promise = Bluebird;
var accesstoken = process.env.ACCEsstOKEN ;
var endpoint = process.env.ENDPOINT;
var stream,submissionId;
const app = express();
const PORT=process.env.PORT;
app.use(express.json());
app.use(cors());


app.get('/',(req,res)=>{
    console.log("Got a request");
   res.send("Hello User!");
});

app.post('/api/compiler/java',res)=>{  
fetch('https://' + endpoint + '/api/v4/submissions?access_token=' + accesstoken,{
   method: 'POST',mode: "no-cors",headers: {
     'Content-Type': 'application/json',},body: JSON.stringify(req.body),})
 .then(response => response.json())
 .then( data => {
   console.log('Success:',data);
   submissionId=  data.id;
 })
 .catch((error) => {
   console.error('Error:',error);
 });
 
 
  
 setTimeout(() => {
     fetch('https://' + endpoint + '/api/v4/submissions/' + submissionId +  '?access_token=' + accesstoken)
 .then(res=>res.json())
 .then(response => {
   // console.log('Success:',response.result);
   var out= response.result.streams;
   if(out.output){stream='output'}
   else if(out.cmpinfo){stream='cmpinfo'}
   else if(out.error){stream='error'}
 
   console.log(stream);
 })
 .catch((error) => {
   console.error('Error:',error);
 }).then(()=>{
     fetch('https://' + endpoint + '/api/v4/submissions/' + submissionId + '/'+stream+ '?access_token=' + accesstoken)
 .then(res=>res.text())
 .then(response => {
  console.log('Success:',response);
   res.send(response);
 })
 .catch((error) => {
   console.error('Error:',error);
 }); })
 },5000);  
   
});


app.listen(process.env.PORT,()=>console.log(`server is listening on port:${PORT}`));  
快照:1

enter image description here

快照:2

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?