作者darkness0727 (72727)
看板java
标题[问题]Websocket应用於读卡机疑问
时间Mon Mar 28 11:20:34 2016
小的最近因为工作要求要去了解读卡机的程式
目标是能够用於云端管理系统前置的读卡作业
带出卡片资讯
带入持有者卡片相关资料和系统作业
没想到越看头越炸 因为发现似乎限制和问题要处理很多
以早期常见的处理方式建置java applet
因为Web 云端管理系统本身就具备跨浏览器和不同OS系统(MAC..)的要求
所以假如以走早期的方式
会变成还要注意
1.客户端的java版本
2.32 or 64 位元问题
3.读卡机本身的驱动起码也要能支援MAC..
4.applet 签证被甲骨文恶搞要钱...
林林总总很多状况
後来焦头烂耳之际认识的资深工程师跟我提了(Spring) WebSocket这个方式
小弟去找到了
http://gca.nat.gov.tw/download/ndc_meeting.pdf
然後追到去凭证管理中心抓了范例程式来看
发现似乎政府本身也只是初期做一做样子而已
请问一下各位先进 是否有人能提点一下
小弟的以下问题:
1.websocket技术用於读卡机是否就是使用者只要上浏览器
再连接读卡机直接就可以直接读取卡片?
2.这个技术需要读卡机具备什麽?
因为小弟以前从来没有接触这个领域相关的技术应用,都在写spring框架相关全端开发
纯粹就只是个比较会种田的码农,问了什麽太蠢的内容请多包涵O_O
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.96.228.94
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1459135239.A.EA1.html
1F:→ Lordaeron: webscoket 用TCP 开读卡机? 03/28 12:57
2F:→ Lordaeron: 有点仙呢. 03/28 12:57
3F:→ ssccg: 简单来说这个作法是要使用者装client端程式,在client电脑 03/28 13:03
4F:→ ssccg: 上开一个web/websocket server,然後网页连localhost 03/28 13:04
5F:→ ssccg: 去作业,因为现在的潮流是browser不给外挂 03/28 13:04
6F:→ ssccg: 读卡机没差,client端程式用一般client端作法去连读卡机 03/28 13:06
7F:→ ssccg: 你找到的资料说的Websocket API是凭证中心的那个程式中的 03/28 13:08
8F:→ ssccg: localhost server要开的API,不是有个标准API 03/28 13:08
9F:→ ssccg: 也没有一定要用websocket,http也可以做 03/28 13:09
谢谢回覆 那麽假如我需要最简单化的能够让client端user进入网页後就能够在client端
读卡机取得资讯和系统页面介接发送资讯去後台 是否有甚麽关键字可以参考
※ 编辑: darkness0727 (175.96.228.94), 03/28/2016 13:50:46
10F:→ Lordaeron: 果然是个好主意,有趣. 03/28 15:54
11F:推 now99: 跟读卡机沟通就没办法了 03/28 19:09
12F:推 pttnews: 网页URL是远端, 然後websocket读本地端, 可以这样做吗? 03/30 13:43
13F:→ pttnews: JS 不是不能跨网域吗? 03/30 13:44
14F:→ ssccg: http可以设定CORS header就可以跨网域 03/30 15:07
15F:→ ssccg: websocket没有限制,只是browser会传origin header由server 03/30 15:09
16F:→ ssccg: 检查,两种最终都是由server(本地端这个)决定给不给连 03/30 15:10
17F:→ ssccg: 当然要怎麽决定呼叫者合不合法就是很大的问题 03/30 15:14
18F:→ ssccg: 原po的问题,基本上网页没有任何直接跟读卡机通讯的方法 03/30 15:20
19F:→ ssccg: 浏览器不提供的功能,最终都是要在client装程式自己做,只 03/30 15:27
20F:→ ssccg: 差在安装的方式、网页与程式通讯的方式 03/30 15:28
正如ssccg大所说 目前我是执行到利用
https://tyrus.java.net/
这个websocket方案在client端启动执行
一只读取卡片的程式(目前只跑读取健保卡基本资料)
目前已经本地端测试是可以运作 但是後面应该如ssccg大所说还要排除跨域和验证等问题
这种做法似乎能组合的是用Java Web Start去驱动这个包起来的小型伺服器程式
不过接下来没继续实作包起来的部分了
因为工作上读卡的目标难以确认要到甚麽程度(看着远方)
惨一点会需要连大陆的医保卡 社保卡都要能读取 或者是要进入医疗的规范还要跟医事卡
等等的做更复杂的读卡设计 不过就是因为太复杂很多都没法确定是不是有这个需求
要执行与否
这几天team的讨论决议後
目前还是先以最单纯的applet+读基本资料就好(虽然我觉得不单纯 以现在的趋势)
谢谢各位先进的回答
小弟尝试过後也对於为何大部分连接硬体设施读卡的软体系统平台大多是用桌上型开发
有比较深的理解
※ 编辑: darkness0727 (223.139.150.212), 03/30/2016 17:14:06
21F:→ ssccg: 浏览器外挂作法网页开了直接装,比较单纯,缺点是快要被淘 03/30 19:57
22F:→ ssccg: 汰了还有在行动装置不能用 03/30 19:58
23F:→ Lordaeron: MOBILE装置 读自然人凭证? 03/30 23:30
没有要到mobile那麽仙喔 Lordaeron大
24F:推 MacPerson: 健保卡? 03/31 20:22
25F:→ MacPerson: 给你个建议 如果你们采用JAVA APPLET 网页的操作将会 03/31 20:23
26F:→ MacPerson: 被健保卡读取速度箝制,等於在读健保卡期间将无法做任 03/31 20:24
27F:→ MacPerson: 操作(等於HAND住 医生会很火大) 你们需要克服这点 03/31 20:24
28F:→ MacPerson: 就我所知目前较佳解法已如上面大大所述 ,这样你可以 03/31 20:25
29F:→ MacPerson: 边读写卡,边做网页操作(让USER感觉很SMOOTH) 03/31 20:25
30F:→ MacPerson: 我们有失败经验,你们可以借镜.... 03/31 20:27
31F:→ Lordaeron: 我比较不明白的是, 为何考虑到行动装置用? 03/31 23:40
32F:推 now99: 行动装置也是可以,不过要看读卡机走usb or 蓝芽 or 音频 04/01 00:04
33F:→ now99: 接口 04/01 00:04
34F:→ ssccg: 行动装置只是顺便提一下,这也是外挂越来越少用的原因之一 04/01 02:00
小的讲的更明白些好了 基本上小弟查询後发现applet作法的确不是最好的处理方式
以现在的潮流而言 这个也是步入淘汰的作法 从政府开始要改善就知道了
本身是打算写两个方案
一个是拿来报告应付用的applet 单纯读健保卡基本资料
因为後续要更进阶要考量很多实务上的经验 但是我们团队还没有很好的领航者
另外一个就是在这次研究过程想实践的微型web socket server包在java web start内
当然ssccg大提到的http server也有概念些
小的也有去跟在网路上找到的"养鸭宗师"了解了一下方向(应该大致上没错)
总而言之 假如小弟参与的是一个桌上型的java整合硬体应用专案
应该在这方面的问题就没那麽复杂 这也是大多医院所内部系统不云端化的主因之一
小的先前并无在医疗相关体系有工作经验 这次的经历起码让我知道
1.java applet对於开发者的困扰
2.java web start的概念
3.现今大多浏览器停止applet後对於部分产业的影响
4.为何国内还是一堆IE only读卡
此外另外提一个很有趣的论点 在大陆地区写这种整合读卡的内部医疗(HIS等)系统
整理而来的大多还是不会用java开发 似乎跟稳定性和介面复杂度有关
这没有贬低java的意思 是在大陆一个医思论坛整理得来得资讯
那儿的同胞似乎觉得用java开发出一个桌上型医疗管理系统是非常神奇的事情XD
※ 编辑: darkness0727 (175.96.230.73), 04/01/2016 11:42:24
35F:→ Lordaeron: web 跟card reader 沟通, 要是哪堆什麽XXAPI不能用了 04/01 14:19
36F:→ Lordaeron: 哪只好就SOCKET罗, 不然得用专用BROWSER. BUT... 04/01 14:20
37F:→ Lordaeron: 像自然人凭证,还要CHT 帮忙才行. 但搞哪麽多,要不要考 04/01 14:20
38F:→ Lordaeron: 直接APP 做就好, 搞个不三不四. 另外APPLET SIGN 我 04/01 14:21
39F:→ Lordaeron: 记得不用钱啊. 04/01 14:21
40F:→ Lordaeron: 致於像now99讲的, 真的来个行动装置读卡, 感觉得手机写 04/01 14:26
41F:→ Lordaeron: 论文一样的无言. 04/01 14:26
42F:→ dream1124: 客户端领域的确不是java的强项 04/02 21:59
43F:推 janice001: 科科 04/03 21:47
44F:→ MonyemLi: 纯ms平台读取资源,java其实多一层,不如用c# 04/08 01:55
45F:→ MonyemLi: 而且你不是要云端嘛,怎麽後面叙述是桌上型. 04/08 01:56
46F:→ MonyemLi: 桌上型swt挂浏览器+java card组合用就好 04/08 01:58
47F:→ darkness0727: 内部医疗系统大多是桌上型开发 颇少用JAVA写 04/08 11:53
48F:→ darkness0727: 没有云端跳Tone桌上型的意思 04/08 11:53