Web 页面与 server 间的通信和交互

2015-02-27 22:13:53 +08:00
 seraphimhj

有一个任务提交的页面, 提交后会由另一个server长时间运行, 期望运行完后页面自动显示完成并回显server 返回的信息, 各位大牛指点下有哪些技术可以达成 #被墙专心讨论技术#

2200 次点击
所在节点    问与答
8 条回复
lk09364
2015-02-27 22:29:03 +08:00
Keywords: ajax 长连接
http://www.zhihu.com/question/19876749

除了回答里的4个方法,还有websocket。
seraphimhj
2015-02-27 22:34:45 +08:00
ok, 我还搜到了WAMP, 但是总感觉这类技术是用来做实时交互的, 这个其实不必那么实时.
lk09364
2015-02-27 22:39:19 +08:00
@seraphimhj WAMP只是架构网站的平台,不一定涉及实时交互。
ETiV
2015-02-27 23:17:16 +08:00
"长时间运行" 多长算是长?

长到使用者已经没耐心, 关了页面的话, 这种技术也没必要去实现了吧.

我之前给我们公司做的是, 长时间运行的任务, 从网页上提交之后交给服务器. 然后提交的人该干嘛干嘛去.

服务器跑完结果, 再把结果页面的地址通过RTX发消息给发起任务的人.
maemual
2015-02-27 23:30:28 +08:00
简单的 ajax 定时从服务器拉一下结果有这么复杂么?
kn007
2015-02-27 23:46:10 +08:00
websocket?
zkd8907
2015-02-27 23:48:19 +08:00
0、我们这里一般称这种场景叫Job,跑超长时间的Job一般会创建一个Job Manager来管理(以C#为例);
1、每次需要跑Job的时候,不管是怎么样的Job,都需要包装在一个继承IJob对象中,IJob中需要实现几个接口,比如Job本身的任务、成功的委托(回调)、失败的委托、Progress的委托、超时设置、异常邮件、优先级、起止时间之类的。
2、一般在用户点击完某个按钮以后,后台便会创建相应的Job对象,然后将对象放进Job Manager中,Job Manager会立即返回一个Job ID(保存在数据库中)返回到前台,前台根据显示的ID指引用户去Job Manager中监视Job的执行情况。
3、Job Manager会根据Job的信息安排执行的时间、优先级,并更新数据库中对应Job的信息。
4、终端用户可以在Job Manager中监视相关的Job执行情况,输出日志等信息,也可以对Job进行相应的调度,比如强制启动、强制关闭之类的。
5、Job执行完毕以后会将输出文件、日志等信息通过Job Manager保存到指定的位置,用户可以在线浏览也可以下载归档。
6、部分Job会在执行的过程中发送邮件,不过这个不归Job Manager管理,只需要在相当的逻辑实现里写就行了。
7、这个设计在我们的系统中使用效果还不错,不过也不是原创的,参照了.Net ThreadPool以及Oracle PeopleSoft中的作业管理器两个模型,根据我们自己的业务做了很大的简化。
seraphimhj
2015-02-28 00:16:40 +08:00
@zkd8907 长回复, 多谢. 很有价值, 让我想起了 hadoop 的任务界面.

@ETiV 其实没那么长, RTX 的方式对内部使用来说可以了, 但是对于用户产品可能不那么合适.
@maemual
@kn007
感谢几位建议

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/173351

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX