workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
GatewayWorker
运行一段时间后报如下错误,这是什么原因导致的,有看到
进
程busy
:742 Stack trace: #0 /usr/MDDeviceService/vendor/workerman/gateway-worker/src/Lib/Gateway.php(674):
GatewayWorker
sendAndRecv('192.168.3.102:2...', Array) #1 /usr/MDDeviceService/Applications/MDDeviceServer/Events.php(260):
GatewayWorker
:742 Stack trace: #0 /usr/MDDeviceService/vendor/workerman/gateway-worker/src/Lib/Gateway.php(674):
GatewayWorker
sendAndRecv('192.168.3.102:2...', Array) #1 /usr/MDDeviceService/Applications/MDDeviceServer/Events.php(260):
GatewayWorker
问答
gateway
进
程模型
[](http://www.workerman.net/img/GatewayWorker.png) 上图中,worker3从gateway2 收到信息,怎么会从gateway1
进
行信息转
发
?上图中,worker3从gateway2 收到信息,怎么会从gateway1
进
行信息转
发
?难道是gateway1 和 gateway2 保存的都有client1-8 的信息吗?
问答
gateway使用心跳报文,服务端ws链接仍然会断开链接
#### 问题描述 使用gateway做长连接,未做心跳时,1分钟不
发
送
消息就断开链接,增加心跳报文后,分钟左右也会断开链接,不清楚什么原因。#### 程序代码 终端心跳报文计时如下,每次收到、
发
送
消息都会重新计时,终端ws.closed已经注释掉: let timer; // 定时器函
数
function startTimer() { clearInterval(timer); // 确保只有一个定时器在运行 //
发
送
ping报文的逻辑 function sendPing() { ws.send('ping'); console.log("
发
送
ping报文"); // 重置计
数
器的逻辑startTimer(); 服务端把start_gateway.php中注释代码去掉,简单做了修改如下: // 心跳间隔 $gateway->pingInterval = 55; // 心跳
数
据
问答
断开连接后,还能接收到心跳
#### 问题描述 问题一 我在onWorkerStart方法里,通过mysql查询到所有设备上一次存的clientId 然后全执行一遍closeClient方法,全断开一遍 但
发
现断开后,还是能收到心跳
数
据
执行了closeClient之后, 查看getAllClientIdList,里面还是有这个clientId 问题
二
程序出错导致onWorkerStart方法重新被执行,之前已经连接的clientId
问答
问两个问题 关于 视图 模型 配置文件
第
二
个问题、GatewayWorkerman框架的
数
据
库操作类、视图类它们放在哪里?怎样调用?
问答
请问在官方的异步http(workerman/http-client)中,如果获取event.php里面的变量值呢?
使用的是
GatewayWorker
,在event.php的onMessage里的case 'say'中,使用workerman/http-client定义了回调函
数
,运行后,提示回调函
数
里面变量未定义workerman-chat\workerman-chat\Applications\Chat\Events.php on line 201 而client_id,client_name如果不使用这个异步http是正常能
发
送
群消息的
问答
Gateway::sendToClient($client_id, $message_str) 客户端收不到消息。
用socket 在客户端和 服务器之间
进
行交互。onConnect的时候,向客户端
发
送
消息,可以收到。 但是,当onMessage 的时候 ,使用同样的方法,客户端收不到消息。虽然客户端收不到服务器消息,但是服务器可以收到客户端
发
送
过来的消息。```php $data_arr = [123, 0, 0, 0, 0, 93, 238, 85, 249, 0, 139, 0, 5, 1, 1, 0, 0, 2, 168, 123]; //-把
数
组转成字符串
发
送
给客户端
问答
webman使用了权限控
制
中间件之后,如果有的controller不需要权限控
制
该怎么办?
webman使用了权限控
制
中间件之后,如果有的controller不需要权限控
制
该怎么办?
问答
设备一段时间后连接client_id丢失
有7000多的设备通过长链连接,后台会统计在线的设备
数
据
,
发
现这个
数
刷新时经常会变小,具体原因还在排查,也希望能提供排查思路。详细: 假如我们叫他 A设备 连接后,会有ping-pong的心跳,开始也没有问题,可以下
发
控
制
等各种操作没有问题,但过了一段时间后,可能是6个小时以上,后台无法检测到A设备,然后从设备上打日志查看
发
现,A设备仍然能收到服务器的ping,且在回复pong,证明连接通道并没有断开,但在后端无论用什么方法都获取不到client_id和session
数
据
,主要是通过Gateway中间件,在哪一台服务器上都无法获取架构:分布式,一台主register, 1.后端通过Gateway.class.php下
发
指令。2.设备连接通过workerman返回的client_id后post到后端,后端通过Gateway网关
进
行绑定、加入组、存入session。
问答
用
gatewayworker
给客户端做推
送
如何记录、统计 推
送
结果,并根
据
推
送
结果做重复推
送
问答
客户端消息推
送
的适用场景有哪些呢?
在webman/push插件中有一种方法是客户端之间的推
送
,这种推
送
方式的应用场景,我可以想到在线聊天,通过客户端推
送
将消息A传递给B,此时消息是不过服务端的,此时我想存储聊天记录只能在
发
送
消息时,只能在
发
出消息时但是我想到实现聊天室的方式,还可以通过api接口,将信息提交到服务端,服务端在存储聊天记录的同时,还可以通过push服务端推
送
到相应客户端。 请问客户端推
送
还有那些应用场景呢?如果是做聊天,使用以下那种方案会更好一些呢 1.客户端之间推
送
。2.提交到服务器中,在推
送
到相应客户端。? push推
送
时,如何判断相应接收方是否在线呢?在线才推
送
没在线就不推
送
问答
workerman
还要我想用于物联网 GSM和他socect通信 他怎么将
数
据
发
送
给tcp 板子 GSM已经链接我的主机,还要安装成功显示什么??
文档
协程并
发
Parallel
[1,2,3,4] }; Worker::runAll(); ``` ## 接口说明 ```php interface ParallelInterface { /** * 构造函
数
,$concurrent为并行任务
数
,-1表示不限
制
并行任务
数
*/ public function __construct(int $concurrent = -1); /*void; /** * 等待所有任务完成并返回结果 */ public function wait(): array; /** * 获取任务中
发
生异常的结果
问答
GateWay框架的疑问
像我们这种分布式的框架,针对sendToUid,在某个
进
程中其实无法感知到具体的uid绑定的连接是在哪个服务节点的
进
程中的,当前的实现是应该属于广播式的把
发
送
指令广播到所有的gateway
进
程中,让他们自己判断当前的
进
程中是否存在需要被
发
送
的uid所绑定的链接,从而完成消息
发
送
,但是这样一来,如果作为一款IM的应用, 假如: 10万的用户在线量,平均每个用户每秒
发
送
一条,那么按照这样广播的
发
送
消息方式。是不是意味着不管我们gateway扩增到多少台节点上,每个gateway
进
程其实都将固定承受来自广播的 10w qps压力?
问答
使用
GatewayWorker
,如何确定和查看ws连接的错误和错误信息?
#### 问题描述 使用
GatewayWorker
建立ws服务端,客户端连接经常会
进
入onerror回调,如何知道这个连接错误是客户端引起的还是服务端引起的?以及具体的错误信息是什么?
问答
webman的push推
送
问题
[截图](/upload/img/20220331/31624561d9cddd.png) 运行
发
送
消息的服务端代码 !
问答
望各位吴彦祖们给予思路【webman】
1、类似一堆字典信息,想法是通过service加载,在service中定期更新,然后不同
进
程通过service来调用这些
数
据
。尝试把方法放在container中,但
发
现container是根
据
worker
数
量来一一对应的,如4个worker的话就会有4个container,但实际我只需要1个
进
程维护字典信息并提供接口读取。2、通过redis_queue把日志内容写入
数
据
库中,但
发
现
数
据
能写入,但是status里的redis_consumer的total_request达到2800+,但
数
据
库中只有几条记录,php start.php
问答
Workerman3.4.2在3.4.0版本上改动了HTTP协议,导致POST请求收不到内容
之前业务是建立在3.4.0版本上,客户端采用POST
发
送
JSON
数
据
,接收正常,现更换为3.4.2版本后,业务代码不变,但打印data
数
据
段,
发
现content-type为**application/json**时,post节点一直为空,为**application/x-www-form-urlencoded**时才会有
数
据
。对比两个版本中的Http.php,
发
现3.4.2改动了一处。
问答
关于webman 里如何获取jwt token的问题(求思路)
思路:
数
据
库里存着开
发
者需要用的 appid 和 secret ,开
发
者在第一次请求接口的时候,在 header 里携带 appid 和 secret ,在中间件里验证 appid 和 secret 通过后,给开
发
者下
发
token ,然后开
发
者携带着 token 去访问所有接口。备注:我有一个最底层的用户信息系统,很多其他的APP应用所产生的用户
数
据
,都会存到汇总到这里,而不是他们每个单独去存。所以,我就的要让这些其他系统有权限来通过接口来访问这个最底层的用户信息系统。第
二
个问题:把 appid 和 secret 放在 header 里是否安全?如果不安全,应该怎么解决?
文档
workerman/redis-queue
\n"; echo $exception->getMessage(), "\n"; var_export($package); }); // 定时向队列
发
送
消息消费失败后消息会放到延迟队列等待重试,重试次
数
由 `max_attempts`控
制
,重试间隔由`retry_seconds`和`max_attempts`共同控
制
。` `attempts` `max_attempts`等信息 支持更改内部
数
据
结构`$package`的值,只需要将更改后的`$package` return 即可。` ------------------------------------------------------- ## 在非workerman环境向队列
发
送
消息 有时候一些项目运行在apache或者php-fpm环境,无法使用workerman/redis-queue项目,可以参考如下函
数
实现
发
送
``` function redis_queue_send($redis, $queue, $data
« 上一页
1
...
124
125
126
127
128
129
130
131
...
443
下一页 »
« 上一页
127
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝