Jing.fm-Ndual icon indicating copy to clipboard operation
Jing.fm-Ndual copied to clipboard

请问手机控制pc软件的原理是什么?

Open itfan opened this issue 11 years ago • 4 comments

二维码解析为:http://jn.whattoc.com/ipod?ip=192.168.1.3

手机和PC在同一个局域网

我本以为是pc端软件开启了一个server,手机通过ip控制pc软件,但不是。。。

itfan avatar Feb 08 '14 05:02 itfan

这个是一个很创新的架构,请耐心听完我的解释,我不知道你到达了哪个步骤,如果能够顺利控制,那么我实在太感激你的耐心,因为实际上,推出后,比较忙,就没跟进了。

node-webkit上面跑的是,我服务器上的网页也就是 http://jn.whattoc.com/ipod,这个网页做了些什么,这就是问题的关键了。

服务器上面做了两件事情

1.提供了Node-weibkit运行的页面运行代码,仅仅是代码,为什么采取这样做,因为node-webkit 不支持原生mp3播放,所以需要利用jplayer的 flash方式来播放,flash如果本地运行会遇到沙箱,所以需要一个web-server,所以为了让用户不需要创建一个server,所以我做了服务器

2.另外就是为了修复更新,没错因为所有代码都是在我服务器上的,所以我想更新什么就什么?那这样做法跟普通浏览器有什么区别,区别在于我在node-webkit,打开了node-remote 选项,我可以操作本地文件,也就是说我可以调用C++ 或者node.js的库,我利用node。js的socket.io 创建了一个本地 socket.io的服务器,手机通过扫描二维码,可以获取到本地socket.io 服务器的IP,通过socket.io 监听那个IO,就相当于局域网连接上了socket.io,相当于手机上的页面控制是通过 本地局域网的,不存在延时,除非客户端浏览器性能对socket.io支持不好。欢迎讨论。

youyudehexie avatar Feb 08 '14 12:02 youyudehexie

@youyudehexie 非常感谢你的回复。

##我还有两个问题:

  1. 如果PC所在的局域网ip为192.168.1.3,手机为普通3G网络,那么手机肯定无法控制PC播放了吧?

需要利用jplayer的 flash方式来播放,flash如果本地运行会遇到沙箱,所以需要一个web-server,所以为了让用户不需要创建一个server,所以我做了服务器。

我没看懂你这句话。你在 http://jn.whattoc.com/ipod 服务器用的是jplayer,那么PC端node-webkit就是相当于普通浏览器了?但还是得解析mp3啊。小白,让你见笑了。

itfan avatar Feb 09 '14 09:02 itfan

1.没错,必须要在同一个网络里面,才行,我曾经做过一个版本是,走互联网的,发现互联网延迟很严重,操作实时性太差,失去了控制的手感,所以直接用局域网wifi的做法。

2.沙箱的问题,不难理解,node-webkit,默认的运行方式是file:///app.exe 类似这样,但是如果要运行flash,file协议会被拒绝,必须要 http://app.exe,所以我需要提供一个server,回避沙箱问题。直接说答案吧,实际上解析mp3的时候,是node-webkit作为浏览器加载 jPlayer这个flash组建,jPlayer读取网络上的Mp3地址,进行mp3播放,为什么不直接用

youyudehexie avatar Feb 09 '14 09:02 youyudehexie

@youyudehexie 似懂非懂了 谢谢分享 也把这些原理留给后人看吧

itfan avatar Feb 09 '14 13:02 itfan