websocket项目电子签字使用场景

场景描述:进入页面时,如果设置强制签字,发送签字webSocket连接,同时页面有个重新签字按钮,这个按钮会多次调用

第一步:先建立一个websocket的js文件,名叫signSocket.js内容如下:

 1 /* websocket */
 2 var socket;
 3 var connectStatus = false;
 4
 5 function Connect(){
 6     try{
 7         if(socket){
 8             socket.close();
 9             socket = null;
10         }
11         socket=new WebSocket(‘ws://127.0.0.1:40000‘);
12     }catch(e){
13         console.error("WebSocket 连接失败" ,e)
14         return;
15     }
16     socket.onopen = sOpen;
17     socket.onerror = sError;
18     socket.onmessage= sMessage;
19     socket.onclose= sClose;
20 }
21 function sOpen(){
22     console.info("WebSocket sOpen" ,"打开连接成功")
23     connectStatus = true;
24 }
25 function sError(e){
26     console.error("WebSocket sError" ,e)
27 //    error("签字程序连接失败,请刷新页面再试");
28     var iframe = $(document.getElementsByTagName("iframe"));
29     if(iframe && iframe.length > 0){
30         iframe[0].contentWindow.layer.closeAll();
31 //        iframe[0].contentWindow.error("签字程序连接失败,请刷新页面再试");
32         if(iframe[0].contentWindow.signatureError){
33             iframe[0].contentWindow.signatureError();
34         }
35     }
36      socket.close();
37 }
38 function sMessage(msg){
39     console.info("WebSocket sMessage" ,msg)
40     if(isExitsFunction(‘ifSignatureSuccess‘)){
41         ifSignatureSuccess(msg.data);
42     }
43 }
44 function sClose(e){
45     console.info("WebSocket sClose" ,e)
46     connectStatus = false;
47 }
48
49 function Send(recordId, url){
50     Connect();
51     var intCount = 0;
52     var interval = setInterval(function(){
53         console.info("sockect 等待连接...")
54         if(intCount++ > 20){
55              clearInterval(interval);
56         }
57         if(connectStatus && socket){
58             if(!recordId){
59                 socket.send("finish");
60             }else{
61                 socket.send("open," + url + "," + recordId);
62             }
63             clearInterval(interval);
64         }
65     },100);
66 }
67
68 function Close(){
69     socket.close();
70 }
71 /* websocket end */

第二步:页面引用,与发送请求

<script type=‘text/javascript‘ src=‘${ctxStatic}/js/signSockect.js?v=2018031914‘></script>



function SignatureIdByOs(id){
        console.info("当前os版本" + gs.ClientOs());
        if(gs.ClientOs().indexOf("Win") > -1){
            SignatureId(id);
        }else {
            SignatureIdApp(id);
        }
    }

    function SignatureId(id) {
//               signatureStart();
        console.info(id,‘${host}${ftx}/api/disclosure?vaccid=S_‘ + localCode + "_" + id);
        Send(id, ‘${host}${ftx}/api/disclosure?vaccid=S_‘ + localCode + "_" + id);
    }

第三步:进入方法,返回数据给页面

@RequestMapping("/disclosure")public String disclosure(HttpServletRequest request, String vaccid, Model model) {   logger.info("签字获取告知书vaccid" + vaccid);   String disContext = "";   ...
   Map<String, String[]> args = request.getParameterMap();   model.addAttribute("pid", "");   model.addAttribute("childcode", "");   model.addAttribute("currentPrice", "");   model.addAttribute("paymentType", "");   model.addAttribute("rid", "");   model.addAttribute("createBy", "");

   if(args.get("pid") != null) model.addAttribute("pid", args.get("pid")[0]);   if(args.get("childcode") != null) model.addAttribute("childcode", args.get("childcode")[0]);   if(args.get("currentPrice") != null) model.addAttribute("currentPrice", args.get("currentPrice")[0]);   if(args.get("paymentType") != null) model.addAttribute("paymentType", args.get("paymentType")[0]);   if(args.get("rid") != null) model.addAttribute("rid", args.get("rid")[0]);   if(args.get("createBy") != null) model.addAttribute("createBy", args.get("createBy")[0]);   return "modules/child_vaccinaterecord/signatureShow";}


原文地址:https://www.cnblogs.com/banxian-yi/p/10635366.html

时间: 2024-11-13 09:11:31

websocket项目电子签字使用场景的相关文章

Unity2D游戏开发基础教程1.2 项目、资源和场景

Unity2D游戏开发基础教程1.2 项目.资源和场景 如果使用Unity制作游戏,就一定会接触到项目(Project.资源(Asset)和场景(Scene).本节将依次介绍它们. 1.2.1项目 Unity是一个基于项目的应用.这就意味着每开发一个新游戏,都要创建一个新项目.一个项目就代表一个游戏,不管游戏是2D还是3D的.开发人员可以把项目当做容器,它包含了开发游戏时,自动生成还有引入的所有文件.本文选自<Unity2D游戏开发基础教程大学霸> 要在Unity里创建一个新项目,可以单击Fi

四渎《构建之法》——计划估计、敏捷流程、项目经理和用户场景

本周再次打开<构建之法>,这次我阅读时重点在于学习敏捷流程.项目经理和用户场景等相对较为宏观的内容. 第六章开篇即简单地介绍了敏捷开发的流程:Product Backlog->Sprint Backlog->Sprint->软件的增量发布.同时提出了一些敏捷开发的特色之处:团队成员自己主导任务的估计和分配,使其能动性得到较大的发挥:通过每日"例"会进行面对面的交流,报告工作进度.今日要工作的内容.遇见的问题:通过燃尽图或看版图展现项目进度.这是一种和我们之

websocket 项目应用

序言 很早就想用起来websocket,可惜需要后台服务的支持,技术的翻新总会给我带来巨大的冲击,最近后端人员学习了websocket相关后台技术.于是我们开始动起来了. 学习 这位大兄弟的文章  http://www.cnblogs.com/smark/archive/2012/11/26/2789812.html 背景 因为需要做一个进度条功能,表格刷新基本angualr的双向绑定,说到底就是 $watchCollection,脏值检测来驱动渲染.所以之前加载方法就是定时改变数据源来实现.

OSG项目经验2&lt;在场景中添加文字面版&gt;

添加文字版需要用到osg的三个名字空间: osgText::Text,这个类用来添加文字和设置文字的一些属性: osg::Geometry,这个类用来画常见的图形: osg/ShapeDrawable,通过这个类也可以画一些常见的图形,并且可以吧Geometry加进osg::Geode节点中: 下面先简要介绍一下这三个命名空间: 1.osgText::Text:见http://www.cnblogs.com/xiaocainiao2hao/p/4544273.html 2.OSG::Gemote

使用daphne部署django channles websocket 项目

前言:最近写了一个项目,有部分功能使用django channles websocket写的,使用的链接是wss:// 或者 ws:// ,到真实在uwsgi+nginx部署时,发现wss:// 或者 ws://不可用了,后来查了比较多时间,尝试过修改nginx配置文件,尝试过修改uwsgi配置文件,尝试过使用gunicorn部署,都没有解决此问题.最终发现需要多启用一个进程daphne,使用daphne启动django channles websocket对应功能进程,问题得到解决. 1.增加

sphinx在亿级项目中的使用场景

不管是网站还是app很多产品的设计思路和产品功能多多少少都有相似之处,那么这边主要讲以下几个场景 描述.话题的搜索 主要的实现思路是全量索引+增量索引方式,可设定时任务定点跑索引 用户昵称的搜索 主要是实现思路是实时索引+分布式索引的方式,用户由于过多,故使用实时索引的方法进行增加,旧数据通过跑脚本重新读取后再写入. 搜索框联想词的提示 主要实现思路是分布式索引的方式,自动联想其他人曾经输入过的词语. tip: morphology = stem_en会启用英文单词的提取.搜索英文时候就不会一个

计划估计,敏捷流程,项目经理和用户场景

敏捷建模(AM)定义了一系列的核心原则和辅助原则,它们为项目中的建模实践奠定了基石.其中一些原则是从XP中借鉴而来,在Extreme Programming Explained中有它们的详细描述.而XP中的一些原则又是源于众所周知的软件工程学.复用的思想随处可见!基本上,本文中对这些原则的阐述主要侧重于它们是如何影响着建模工作:这样,对于这些借鉴于XP的原则,我们可以从另一个角度来看待. 6.1敏捷的流程 2.  适用范围 本章程的作用范围为互联网软件产品开发立项至结项管理过程. 1.对项目经理

项目冲刺之任务场景分析(三)

任务三:(教师系统)发布公告信息 1,背景 (1)典型用户:老王(教师) (2)用户需求/迫切想要解决的问题 希望学生能够及时的收到教师发布的公告,避免学生无法及时接收到通知消息. 2,关于场景描述 老王今天被学校通知自己上的周四软件工程那门课程教室被改到了301,这时他想发送这个通知给他所教的学生.于是他登录了教师教务系统,点击导航栏里的“发布公告”,他通过下拉框选择了他所教的课程中的“软件工程”这门课,在内容文本框中输入了公告内容,点击发送. 原文地址:https://www.cnblogs

websocket 用途,例子,场景,什么时候用websocket

websocket 应用例子如下先总结:高即时性服务,比如聊天室的群聊,server顺序收到了张三,李四的消息,立即就推送给王五,不能让王五等半天.Ajax也可以一秒一刷,让王五去问张三说话没,如果张三10分钟没说话,王五要去问600次. 用websocket 王五不用刷,等着就好了,服务器有了消息会自动给王五的.1.websocket社交订阅对社交类的应用的一个裨益之处就是能够即时的知道你的朋友正在做什么.虽然听起来有点可怕,但是我们都喜欢这样做.你不会想要在数分钟之后才能知道一个家庭成员在馅