架构是这样的,前端vue,后端java,c#端打包成exe提供给成百上千的用户端下载(c#的功能就是从服务器端下载这个word到用户端本机)。前端vue以及java,都部署在阿里云的远程服务器上面在,c#项目发布的exe安装包在成百上千的用户端下载安装。目前希望解决websocket服务端(在java后台编写)跟c#的客户端实现通信的问题。现在有一个需求,张三登录前端系统后,在浏览器里面点击一个word文档的标题, 然后java服务端获取到这个文档的标题以及路径,通过java的websocket跟张三用户本机的websocket来通信,例如发送消息报文类似的,现在存在一个问题,c#的exe在用户端安装后,就会跟java服务端的websocket服务端连接上,假如现在有成百上千的websocket连接,当前登录人张三,如何把这个报文信息,发送给一对一的张三连接的websocket呢,c#端没有任何用户信息,就是一个简单的安装包。我本来计划是在c#端获取用户磁盘序列号存储在c盘里面,然后试着在java端也获取磁盘的序列号来跟c#相互对比,从而发送报文到张三,但是发现,java服务部署在服务器端,不能获取到用户端的磁盘序列号。
23条回答 默认 最新
wanghui0380 2024-11-08 16:19关注额,有问题需要解释“张三登录前端系统后,在浏览器里面点击一个word文档的标题,”
你先解释这个,我们才能回答。我们需要知道浏览器和你说的exe是什么关系exe用webview加载浏览器?还是你的exe是exe,浏览器是浏览器,他们没任何关系??
为啥知道这个呢?因为我们如果exe内置webview,他可以有办法直接和内置webview通信。
如果exe是exe,浏览器是浏览器。你看qq,百度网盘怎么弄的。qq是 url protocol方案,百度网盘和迅雷是浏览器插件。
当然exe本地内置一个ws service,你网页连接本地ws,直接向本地ws请求,再由本地ws向远端代理请求也可以
不过这种需要多做一步,假设网页连接不到本地ws,需要提示客户先打开本地exe。比如百度网盘,你点击下载,如果你没打开百度网盘,百度网盘会告诉你请先打开百度网盘,同时他会利用插件弹出对话框去启动exe。当然如果我们禁用插件,在客户端没先开exe的情况下,百度网盘也没用,只会提示你“请先安装百度网盘”本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录