Web 页面与 server 间的通信和交互 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
seraphimhj
V2EX    问与答

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

  •  
  •   seraphimhj 2015-02-27 22:13:53 +08:00 2757 次点击
    这是一个创建于 3954 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    8 条回复    2015-02-28 00:16:40 +08:00
    lk09364
        1
    lk09364  
       2015-02-27 22:29:03 +08:00   1
    Keywords: ajax 长连接
    http://www.zhihu.com/question/19876749

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

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

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

    服务器跑完结果, 再把结果页面的地址通过RTX发消息给发起任务的人.
    maemual
        5
    maemual  
       2015-02-27 23:30:28 +08:00   1
    简单的 ajax 定时从服务器拉一下结果有这么复杂么?
    /tr>
    kn007
        6
    kn007  
       2015-02-27 23:46:10 +08:00   1
    websocket?
    zkd8907
        7
    zkd8907  
       2015-02-27 23:48:19 +08:00   2
    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
        8
    seraphimhj  
    OP
       2015-02-28 00:16:40 +08:00
    @zkd8907 长回复, 多谢. 很有价值, 让我想起了 hadoop 的任务界面.

    @ETiV 其实没那么长, RTX 的方式对内部使用来说可以了, 但是对于用户产品可能不那么合适.
    @maemual
    @kn007
    感谢几位建议
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2680 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:17 PVG 23:17 LAX 07:17 JFK 10:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86