TP6 + think-swoole 实践(一)

最近有一个主动向前端发送消息的需求,自然就想到了用 WebSocket 解决,但是没想到 TP6 + think-swoole 的资料这么少,连全面的官方文档也找不到,再加上 Swoole 的官方文档对初学者十分不友好,无奈之下自己摸索了好久,花费了两个半天时间,这里稍微记录一下。

安装

  1. 进入项目目录。

  2. 使用 composer 安装 think-swoole 扩展。即执行 composer require topthink/think-swoole(这里其实有个坑,默认安装的think-swoole 版本为3,但是如果你的项目是 TP5 或者 5.1,就需要指定安装 2.* 的版本了,即在原先的指令末尾加一个版本号composer require topthink/think-swoole 2.*

  3. 修改配置。

    安装成功后,config 目录下会多出一个 swoole.php 文件,只需要修改 server 内的 host 和 port 就可以运行了。其中 host 为监听的地址,一般为 127.0.0.1(仅监听本地访问)或 0.0.0.0(监听所有IP),也设置成仅局域网可访问之类的。port 即专门提供服务的端口,如果用的是云服务器或者用了宝塔,还需要去云服务器上添加安全组和在宝塔上添加放行端口。
    TP6 + think-swoole 实践(一)_第1张图片

  4. 启动 swoole 服务。php think swoolephp think swoole start

    启动成功后,会有个提示,然后就可以正常访问了。比如你原先有一个接口的地址是 http://mu-mu.cn/socket-test/public/index.php/test,现在就可以通过 http://host:port/test 来访问了。

    启动成功后,相当于另外开启了一个HTTP服务,所以原先所有的请求只要换个地址就能照旧使用了,如果配置中的websocket.enable属性是true,那么同时也为一个websocket服务器,能够处理ws协议的请求;如果你连地址都懒得换,也可以在Web服务器(Nginx、Apache等)中配置一下反向代理,简单的代码如下:

    server{
    	listen 80 ;
    	server_name 域名;
    
    	#代理配置
    	location /{
    		proxy_set_header X-Original-Host $host;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_pass http://127.0.0.1:9501/;
    	}
    }
    
  5. 其他额外的设置

为了开发方便,可以开启热更新,即将 swoole.php 中的 hot_update.enable 设置为 true。不然的话每次修改代码,都需要 restart 才能生效,挺麻烦的。

其他设置像守护进程、wss什么的对开发的影响都不大,基本上可以开始写代码了。

好了,最简单的安装也被我啰啰嗦嗦说了这么多,后面就正式开始写代码和踩坑了。

你可能感兴趣的:(后端,php,swoole,websocket,php,thinkphp)