workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
AsyncTcpConnection作为客户端与其他服务端通信连接出现
数
据
延迟的问题
我是用AsyncTcpConnection作为客户端,连接其他socket
进
行通信,但是当服务器那边
发
送
给我这边的客户端短时间内,也就是并
发
一多,其实也没多少,差不多100左右,这边的客户端在onMessage打印的
数
据
里有些请求就会延迟个1分钟以内不等的时间,所以想问这个怎么解决???
文档
send
data ``` 要
发
送
的
数
据
,如果在初始化Worker类时指定了协议,则会自动调用协议的encode方法,完成协议打包工作后
发
送
给客户端 ``` $raw ``` 是否
发
送
原始
数
据
,即不调用协议的encode方法,默认是false,即自动调用协议的encode方法 ## 返回值 true 表示
数
据
已经成功写入到该连接的操作系统层的socket
发
送
缓冲区 null 表示
数
据
已经写入到该连接的应用层
发
送
缓冲区socket
发
送
缓冲区,并不意味着
数
据
已经成功的
发
送
给对端socket接收缓冲区,更不意味着对端应用程序已经从本地socket接收缓冲区读取了
数
据
。** 由于socket
发
送
缓冲区的
数
据
是由操作系统异步
发
送
给对端的,操作系统并没有给应用层提供相应确认机
制
,所以**应用层**无法得知socket
发
送
缓冲区的
数
据
何时开始
发
送
,**应用层**更无法得知socket
发
送
缓冲区的
数
据
是否
发
送
成功。
问答
GatewayWorke 连接
数
可以过万,但是前面1015个连接可以向服务器
发
送
信息,1015以后的连接
发
送
信息服务器收不到
GatewayWorke 连接
数
可以过万,但是前面1015个连接可以向服务器
发
送
信息,1015以后的连接
发
送
信息服务器收不到,这是什么情况,是我的内核哪里没有配置吗?
问答
workman 如何接收连续的tcp
数
据
流 然后得到一个完整的
数
据
流
workman 如何接收连续的tcp
数
据
流 ,然后得到一个完整的
数
据
流 。比如tcp
发
过来的
数
据
fafb010100000017 然后又
发
的 00003836393530333033333 最后得到 fafb01010000001700003836393530333033333一个完整的
数
据
流呢
文档
sendToGroup
如果为
数
组,则是给
数
组内所有group
发
送
数
据
* ```$message``` 要
发
送
的
数
据
(字符串类型),此
数
据
会被Gateway所使用协议的encode方法打包后再
发
送
给客户端 * ```$exclude_client_id```$exclude_client_id```
数
组中指定的client_id将被排除在外,不会收到本次
发
的消息 * ```$raw``` 是否
发
送
原始
数
据
,也就是绕过gateway协议打包过程,gateway对
数
据
不再做任何处理,直接
发
给客户端。## 更新日志 | 版本 | 说明 | | -- | -- | | 2.0.7 | 增加了```$exclude_client_id```和```$raw```参
数
| ### 返回值 因为
数
据
发
送
是异步
进
行的一般来说只要客户端在线就可以
发
送
成功。 ## 范例 ```php use \
GatewayWorker
\Lib\Gateway; class Events { ...
问答
(急)怎么把前端推
送
改成php推
送
// Channel客户端连接到Channel服务端 Channel\Client::connect('127.0.0.1', 2206); // 监听全局分组
发
送
消息事件$group_con_map = $con; // 记录这个连接加入了哪些群组,方便在onclose的时候清理group_con_map对应群组的
数
据
case "send_to_group": // Channel\Client给所有服务器的所有
进
程广播分组
发
送
消息事件message'=>$data )); break; } }; // 这里很重要,连接关闭时把连接从全局群组
数
据
中删除>onClose = function($con){ global $group_con_map; // 遍历连接加入的所有群组,从group_con_map删除对应的
数
据
问答
客户端连接gateway得到client_id=01成功后端循环
发
消息,此时前端页面刷新换了client_id=02,后端的消息会将给01的消息也
发
给02,这是为何?
目前有个PHP项目,thinkPHP5.1框架,使用gateway库,客户端连接socket成功后client_id为01,服务端开启一个大循环(总耗时
数
分钟)给该客户端01
发
消息,消息未
发
送
结束客户端刷新了页面,client_id变成了02,但是原先
发
给01的
数
据
会叠加
发
到02上,导致02同时接收到了两条消息。请指点一
二
,谢谢。 @walkor
文档
支持哪些协议
# Workerman支持哪些协议 Workerman在接口上支持各种协议,只要符合```ConnectionInterface```接口即可(参见定
制
通讯协议章节)。为了方便开
发
者,Workerman提供了HTTP协议、WebSocket协议以及非常简单的Text文本协议、可用于
二
进
制
传输的frame协议。开
发
者可以直接使用这些协议,不必再
二
次开
发
。如果这些协议都不满足需要,开
发
者可以参照定
制
协议章节实现自己的协议。 开
发
者也可以直接基于tcp或者udp协议。0.0.0.0:1222'); // text文本协议(telnet协议) $worker3 = new Worker('text://0.0.0.0:1223'); // frame文本协议(可用于
二
进
制
数
传输
问答
关于
gatewayworker
中多个端口分别心跳检测的问题
wss $gateway->transport = 'ssl'; // gateway名称,status方便查看 $gateway->name = 'WebsocketSSL'; // gateway
进
程
数
$gateway->registerAddress = '127.0.0.1:21238'; // 心跳间隔 $gateway->pingInterval = 60; //如果设置为0代表客户端不用
发
送
回应
数
据
gateway->registerAddress = '127.0.0.1:21238'; // 心跳间隔 $gateway->pingInterval = 120; //如果设置为0代表客户端不用
发
送
回应
数
据
名称,status方便查看 $gateway->name = 'SCADAGateway'; // gateway
进
程
数
$gateway->count = 4; // 本机ip,分布式部署时使用内网ipgateway->registerAddress = '127.0.0.1:21238'; // 心跳间隔 //$gateway->pingInterval = 15; //如果设置为0代表客户端不用
发
送
回应
数
据
问答
怎样把接收的
数
据
显示到前台?并且在前台
发
送
对应
数
据
给特定的设备?
注册上之后会去连接服务器,服务端开了一个socket,走的是http协议,$webserver = new WebServer('http://0.0.0.0:8080'); 这些设备连上之后,需要人工操作在前端
发
送
一些指令给设备
问答
如何使用多
进
程并行组合处理一个业务?
我现在使用webman提供一个http接口,该功能需要实现以下: ``` 去ES的A索引中查询
数
据
去
数
据
库中查询 去ES的B索引中查询
数
据
``` 以上三步IO没有次序,我想可以用多
进
程的思路来提高并
发
量如果是在其他php-cli环境下,我可以fork三个子
进
程,然后阻塞父
进
程等待三个子
进
程的返回,得到三个子
进
程的返回后,父
进
程统一组装
数
据
响应给调用方。 但是在webman中如何实现呢?我看文档中有说明可以创建带监听的task
进
程,然后控
制
器中使用异步TCP客户端的方式去投递任务,然后在异步TCP客户端的回调中获取返回结果,但是这种情况下我在控
制
器这个主
进
程怎么阻塞等待三个任务的返回啊
问答
GatewayWorker
本人大一小白~因为写项目时遇到了这种场景,用户端下订单需要在商家后台实时推
送
是要选择
GatewayWorker
更好些是么?因为又看到官网上这么写,另外想问下文档说
GatewayWorker
是基于workerman开
发
的框架,那我安装
GatewayWorker
还需要安装workerman嘛?
问答
关于gateway里的worker多
进
程的疑惑的问题
大致都浏览了好几次文档了,有几个疑惑: 看了文档里实例里worker的count都是设置成4,问题来了,那么一个多websocket客户端连接到服务器肯定是会按一定规律分配给不同的worker,多
进
程间
数
据
是无法共享的,那么广播群
发
,workerman怎么处理的,利用了什么机
制
,内存
数
据
共享机
制
吗?我看了下大致的源码,找到一个gateway类里有一个_clientConnections,不明白这个是怎么共享的,而且gateway也是有count设置成4个
进
程的,不解
问答
为什么workerman中http请求过来的
数
据
,后台打印大多
数
情况接收不到
#### 问题描述 这里写描述 你好,问一下为什么http请求过来的
数
据
,我后台打印大多
数
没有,偶尔能打印2次
发
送
过来的
数
据
,websocket请求
数
据
是正常的,就是http请求有问题,域名解析都是正常的
问答
gatewayworker
设置的worker
数
量太多,导致require_once文件失败
一个基于
gatewayworker
框架的服务器程序,我设置了5个gate, 10个worker,然后一个含5个worker的客户端,每个worker
发
起1000个连接到服务器,
发
现服务器报require_once这个相当于多
进
程同时require_once 某个共享文件造成的,这个有办法解决吗,谁叫php是解释型语言呢,在用到的时候才会require
进
来!可是就是这么巧,
进
程
数
多了点就这样了!
问答
Webman中, 分页时,表中字段值过大,排序出错
```php date("ymdhis"); ``` 在表中排序字段类型为bigint, 使用上面date函
数
去更新值,比如更新某一条的sort为220829043719 今天
发
现
数
据
出错, 表现为 1正常输出 2.
进
行分页时,会出现
数
据
错乱. 同一条记录会在第一页,第
二
页中出现2次, 有的记录在所有分页中都不会出现 想了解一下这是什么原因?是
数
字超过了哪里的处理最大限
制
吗
问答
gatewayworker
centos 背景运行不到1小
数
stream_socket_client(): unable to connect to tcp://127.0.0.1:2900
gatewayworker
nohup php start.php start >gateway.log 2>&1 & ; 不到1小时报错 运行环境centos7 ,有知道原因的吗? !stream_socket_client(): unable to connect to tcp://127.0.0.1:2901 (Connection refused) in /www/wwwroot/
GatewayWorker
gateway-worker/src/Lib/Gateway.php on line 755 2022-09-27 05:30:23 8.134.85.72 7f0000010b550000001b收到消息: � 是平台
发
送
消息gateway-worker/src/Lib/Gateway.php on line 755 2022-09-27 05:31:23 8.134.85.72 7f0000010b550000001b收到消息: � 是平台
发
送
消息gateway-worker/src/Lib/Gateway.php on line 755 2022-09-27 05:31:55 8.134.85.72 7f0000010b550000001b收到消息: � 是平台
发
送
消息
问答
gatewayworker
可以做为 socket cliednt 向指定服务器端口
发
送
吗?
在收到socket client消息的时候,想把
数
据
发
给指定服务器端口,比如 tcp://127.0.0.1:8888 。这个时候,服务器如何创建一个 socket client 去实现这个功能?
文档
sendToAll
如果指定的$client_id_array中的client_id不存在则自动丢弃 ## 参
数
* ```$send_data``` 要
发
送
的
数
据
(字符串类型),此
数
据
会被Gateway所使用协议的encode方法打包后
发
送
给客户端 * ```$client_id_array``` 指定向哪些client_id
发
送
,如果不传递该参
数
,则是向所有在线客户端
发
送
```$send_data``````$exclude_client_id```
数
组中指定的client_id将被排除在外,不会收到本次
发
的消息 * ```$raw``` 是否
发
送
原始
数
据
,也就是绕过gateway协议打包过程,gateway对
数
据
不再做任何处理,直接
发
给客户端。### 返回值 因为
数
据
发
送
是异步
进
行的,所以没有返回值。一般来说只要客户端在线就可以
发
送
成功。
问答
【反馈】router中,如果
数
据
处理失败,希望终止后续路由,希望返回bool false ,则会导致
进
程重启
比如官网的http://chat.workerman.net/, 如果你的名字选择为 \h\,即带有特殊字符 \ " 等,会导致后台
进
程报错并重启,是否存在攻击风险,使得
进
程反复重启,并且
进
程中的变量
数
据
将会丢失补充下,仅供官方参考 如果传输的是gzip压缩,又需要根
据
用户
发
来的消息选择路由,则router函
数
中,如果根
据
buffer解压缩失败,或者处理失败,希望终止请求,而不是继续返回一个worker,从而导致后续
进
程的重启。 对于这种需求,请问是否有更好的方法来处理用户
发
来的
数
据
而选择不同的路由,并且对于非法的用户
数
据
,因为不能指定到业务逻辑相关的路由,就需要终止掉该请求,而不导致
进
程重启,谢谢
« 上一页
1
...
34
35
36
37
38
39
40
41
...
434
下一页 »
« 上一页
37
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝