我是想实现通过PHP来制作一个B/S架构的控制系统,可以实时监控设备的状态,并且可以给设备发送指令。
现在的情况是,网站A跟设备控制程序B(C来写)不在一台服务器上,所以需要两者之间进行通信。A需要获取B的最新参数及状态,A也需要向B发送操作指令。A我来写,B我的小伙伴来写。
我先说一下我初步构思方案:
第一种,使用HTTP轮询问。在A服务器上搭建MYSQL数据库,用来存储系统状态和指令队列。如果A需要向B发送指令,那么就存到数据库中,等待B的轮训到来,取走指令队列,同时送来最新的设备状态数据。 [问题在于:实时性不强,而且轮询的话我感觉更容易丢包。]
第二种,使用socket。在A服务器上搭建MYSQL数据库,用来存储系统状态。如果A需要向B发送指令,那么就直接发送给B,B每个一段时间送来最新的设备状态数据。 [问题在于:我没用过socket,需要现学,所以不太熟练。而且对于socket掉线或者各种意外的处理能力不足。]
请问,A与B如何进行通信有什么好的方案?
补充:
1、我只会做网站,用PHP+MYSQL。小伙伴只会硬件,还略懂C#,但是对软件(网站)开发一窍不通。
2、如果推荐的是HTTP轮询,那么请问A需要发送指令给B,有什么比较及时的方法。
3、如果推荐的是socket,那么请问A是不是需要cli模式下的socket服务器php程序保持永久运行?不会有什么不稳定问题吧?
4、希望可以得到比较完全的方案描述。
5、我是一个小白,现在想到的思路都很陈旧,希望可以得到让我眼前一亮的想法或者业内普遍使用的方案。
另外问一个小白问题:HTTP的轮询跟socket连接以后相互发送数据,本质区别有吗?socket稳定性会比HTTP轮训强吗?
谢谢各位啦。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.