怎么样实现用nodejs运行前端传递过去的javascript代码比较好?
发布于 3年前 作者 yutingzhao1991 2746 次浏览

想做一个javascript的在线评测系统,类似于ACM算法设计大赛的那种,可以有测试样例,然后在后端进行运行对比测试样例。有几个问题请教下。

1:至于获取代码不用多说,post一个请求。但是结果是要由post返回吗,还是提交以后再通过其他方式获取评测结果,因为可能后端的文件比对会花“很多”时间。

2:在后端运行代码应该怎么做比较快而且安全。我想到一个方法是用c之类写一个程序去执行命令node test.js > result.txt 但是这样又依赖与c了,能否用node实现调用os命令呢?还有一个方法是用node的VM库,但是这样感觉这样获取到的结果是否靠谱。另外就是安全性的问题了。

欢迎大家给意见,我也是才接触nodejs。其实这是我的毕业设计中的一个功能。^_^

7 回复

1、建議異步取回結果。

2、爲了保證系統的安全性,必須實現一個 sandbox ,這個是 Node.js 做不到的。

3、在線評測系統已經太多了,不要再重複發明輪子了。

嗯 谢谢 ,我再研究下怎么制造轮子

我做过我们学校的oj,主要就是消息队列+沙盒。如果是js在前端运行也可以吧

关于 sandbox 可以使用 node 自带的 vm 模块,

文档参见 http://www.nodejs.org/docs/latest/api/vm.html

关键是涉及到结果的评测,在前端运行后把结果发送到后台评测?

@xqunix 嗯 这个模块再结合fs基本够用了,应该是可以吧console出来的结果获取到的,再研究下

@yutingzhao1991 嗯,那就只能在后台运行了

回到顶部