通常情况下,我们采用 TCP Socket 与智能硬件进行通信。外网环境中,有无数种解决方案:Swoole(PHP),Node.js,SuperSocket(.NET)…… 而在政企事业单位的内网环境,事情或许就不那么好办了。
0x01 目的 接收来自硬件的数据,并在 Web 端展示。 通过 Web 端操作,将指令下发至硬件。 0x02 限制 浏览器需要支持 IE 等老版本浏览器。 服务端需要支持 Windows Server 虚拟机(最低版本 2008)。 纯内网环境,无法访问外网源,无法使用各类包管理器(其实可以自己搭建内网源,但过于复杂,人力成本太高)。 0x03 思路 目前公司 Web 后端语言均为 PHP,所以以下思路全部围绕 PHP 开展。
Laravel + Swoole 实现更快的请求处理速度、更高并发有扩展包可供选择,那么如何在 Laravel 框架内优雅地嵌入 Swoole 实现 TCP/UDP Socket 服务端呢?
0x00 Why 先说说为什么要嵌入 Laravel 吧。
就一个原因:
Eloquent ORM
在各类交流群,甚至多数老一辈程序员的眼里,认为 PHP 是「轻量的」、「不完善的」、「性能难以优化」的,而这么多年来一直坚挺的 Java 却成了开发「XX 系统」的后端首选语言。为此,本篇文章将尽量从非技术角度告诉大家:Why PHP?
现状 其实,从 Java 和 PHP 的历史不难看出。在 Java 开始盛行的年代,PHP 还是个“毛头小子”,只是个普普通通的脚本语言罢了,甚至连面向对象的基本概念——类,都没有支持。
鉴于 PHP 历代升级以来坚守的向下兼容性,至今还可以看到不少用「当年的」原生函数写出来的产品代码可以运行,透过命名规则我们也可以看出当年的 PHP,好像的确「不够完善」。