brewlin / swoft-im

基于swoft-cloud的微服务架构,最小化拆分粒度,PHP7、多进程、协程、异步任务、mysql连接池、redi连接池、rpc连接池、服务治理、服务注册与发现、Aop切面、全注解
http://im.brewlin.com
203 stars 60 forks source link

关于gateway-api-cloud #8

Closed Ethennoob closed 3 years ago

Ethennoob commented 4 years ago

我发现你把gateway-api-cloud里面的websocket模块删除了,我现在想帮你继续开发cloud的模块,当初为啥把ws删了呢。

我打算新建一个app_key表存储引用的ak和serect 然后token必须加密算法,init的时候做对称加密。

brewlin commented 4 years ago

因为我打算 把另外一个 https://github.com/brewlin/im-cloud(独立的分布式推送服务) 接进来。但是现在还没有想到有什么好的办法

Ethennoob commented 4 years ago

我大致看了一下im-cloud,我觉得和swoft-im合并不妥,因为感觉两者差距比较大,swoft-im倾向于轻量化简单化小项目。im-cloud有点企业级了哈哈哈。不过我也挺想研究一下你这个im-cloud的

Ethennoob commented 4 years ago

另外,我觉得这和swoft-im的ws需要有心跳请求才行,不然前端不会断线重连,还有用户关闭浏览器或者杀掉app,服务器也可以从这个心跳请求判断是否需要断线close掉,例如可以再onMessage里面swoole_timer_after来判断

brewlin commented 4 years ago

可以有

Ethennoob commented 4 years ago

大佬,我发现docker的redis-service跑不起来😭 8091端口没有被占用 Could not open input file: /website/redis-service/bin/swoft

api [master] docker-compose up -d 
Creating network "api_my-bridge" with driver "bridge"
Creating api_mysql_1 ... done
Creating api_gateway-api_1   ... done
Creating api_redis-service_1 ... done
Creating api_group-service_1 ... done
Creating api_msg-service_1   ... done
Creating api_user-service_1  ... done
☁  api [master] docker ps
WARNING: Error loading config file: /Users/lingxiang/.docker/config.json: EOF
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS                            PORTS                               NAMES
b05ea38ce739        lxido/group-service               "php /website/group-…"   7 seconds ago       Up 3 seconds                      8090/tcp, 0.0.0.0:8094->8094/tcp    api_group-service_1
8f2eda14cd59        lxido/user-service                "php /website/user-s…"   7 seconds ago       Up 4 seconds                      8090/tcp, 0.0.0.0:8092->8092/tcp    api_user-service_1
63e540ad9c90        lxido/gateway-api                 "php /website/gatewa…"   7 seconds ago       Up 4 seconds                      0.0.0.0:8090->8090/tcp              api_gateway-api_1
ead010ff8d31        lxido/msg-service                 "php /website/gatewa…"   7 seconds ago       Up 3 seconds                      8090/tcp, 0.0.0.0:8093->8093/tcp    api_msg-service_1
0073ea21628b        mysql:5.7                         "docker-entrypoint.s…"   8 seconds ago       Up 6 seconds                      3306/tcp, 33060/tcp                 api_mysql_1

  api [master] ⚡ docker-compose logs
Attaching to api_group-service_1, api_gateway-api_1, api_redis-service_1, api_msg-service_1, api_user-service_1
group-service_1  |                     Information Panel                     
group-service_1  | *************************************************************
group-service_1  | * tcp | Host: 0.0.0.0, port: 8094, mode: 3, type: 1
group-service_1  | *************************************************************
group-service_1  | Server has been started. (master PID: 1, manager PID: 6)
group-service_1  | You can use CTRL + C to stop run.
group-service_1  | 
group-service_1  | RPC service register success by consul ! tcp=localhost:8094
redis-service_1  | Could not open input file: /website/redis-service/bin/swoft
gateway-api_1    |                                  Server Information                     
gateway-api_1    | ************************************************************************************
gateway-api_1    | * WS   | host: 0.0.0.0, port: 8090, type: 1, worker: 2, mode: 3 (http is Enabled)
gateway-api_1    | * TCP  | host: 0.0.0.0, port: 8099, type: 1, worker: 2 (Disabled)
gateway-api_1    | ************************************************************************************
gateway-api_1    | Server has been started. (master PID: 1, manager PID: 6)
gateway-api_1    | You can use CTRL + C to stop run.
Ethennoob commented 4 years ago

破案了,redis-service里面的dockerfile

ADD . /website/gateway-api

EXPOSE 8090

ENTRYPOINT ["php", "/website/redis-service/bin/swoft","rpc:start"]

应该改成

ADD . /website/redis-service

大佬尽快改了dockerfile重新push image上dockerhub呀😆

brewlin commented 4 years ago

嗯,我重新推一下

Ethennoob commented 4 years ago

你好,用docker-compose启动的时候发现容器内的swoft获取不到目录外层的service-components,一般是什么原因

user-service_1       | 
user-service_1       | Fatal error: Interface 'ServiceComponents\Rpc\User\UserGroupServiceInterface' not found in /website/user-service/app/Services/UserGroupService.php on line 25
app-service_1        | 
app-service_1        | Fatal error: Interface 'ServiceComponents\Rpc\App\AppServiceInterface' not found in /website/app-service/app/Services/AppService.php on line 23
user-service_1       | 
user-service_1       | Fatal error: Interface 'ServiceComponents\Rpc\User\UserGroupServiceInterface' not found in /website/user-service/app/Services/UserGroupService.php on line 25
redis-service_1      | 
redis-service_1      | Fatal error: Interface 'ServiceComponents\Rpc\Redis\UserCacheInterface' not found in /website/redis-service/app/Services/UserCacheService.php on line 44
redis-service_1      | 
redis-service_1      | Fatal error: Interface 'ServiceComponents\Rpc\Redis\UserCacheInterface' not found in /website/redis-service/app/Services/UserCacheService.php on line 44
brewlin commented 4 years ago

你改过代码后重新生成的docker吧,你在打包镜像之前建议本地先composer install, 可能的情况如下

  1. 你在composer.json 中定义的components源是本地的,那么你composer install以后其实是个软连接,在实际打包镜像后任然找不到该文件
  2. 你讲该依赖更换为 线上源(github,packagelist),那么你composer install 后是会下载到本地vendor的实体文件,所以打包后不会存在找不到该文件的问题