walkor / GatewayWorker

Distributed realtime messaging framework based on workerman.
MIT License
1.01k stars 296 forks source link

当用webman来使用GatewayWorker的时候的问题 #115

Open kylin987 opened 10 months ago

kylin987 commented 10 months ago

1、我按照GatewayWorker的文档,在项目中安装webman/gateway-worker,但是在业务中如果想发送信息给客户端,我发现使用的是workerman/gateway-worker里面的文件,这里不太理解,这两个之间的关系 2、当我尝试检测一个失效的/无效的client_id的时候,Gateway::isOnline($client_id),这个方法,最终追溯到Context::clientIdToAddress($client_id),我发现,这里的抛异常,是echo,详见GatewayWorker\Lib\Context的第131行,这将导致webman的控制台出现大量的错误信息,并且该异常无法捕获到

twomiao commented 10 months ago
  1. webman 是个web框架,webman/gatewayworker 和 workerman/gatewayworker 是一样的东西,只是为了更方便使用作为插件(库)提供给你使用。
  2. 生产环境都是start -d 守护进程模式运行,这些非法信息输出都会被写入重定向文件里面, 具体请查看:https://www.workerman.net/doc/workerman/worker/stdout-file.html
kylin987 commented 9 months ago

但是webman无法捕获到这个异常,导致后续业务无法处理

twomiao commented 9 months ago

但是webman无法捕获到这个异常,导致后续业务无法处理

说明你的clientId 是无效的,那你应该传递有效的clientId,这样就不会提示了。

kylin987 commented 9 months ago

我们有个接口需要判断client_id是否有效,因为是开放的接口,用户传任何client_id都有可能。算了,我不去捕获失败,我去验证成功就行了,不成功就是失败

twomiao commented 9 months ago

但是webman无法捕获到这个异常,导致后续业务无法处理

就算你做个异常处理你又能怎么处理呢? 这个就是客户端传参的问题,服务器这边提示“无效参数”,没什么问题吧 如果用户层面不做try 操作,可能会发生Gateway网关崩溃。 如果你想要验证接口,你可以选择给Gateway 提交pr 扩展一下接口功能。