workerman
首页
问答
分享
手册
市场
物联网
webman
AI助手
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
使用webman做短连接, gatewaywork长链接的一些问题
所以针对长链接还是想用gatewaywork 如果这样配合的话,业务也不想写在gatewaywork,准备gateway只做网关用,在gateway的worker只处理一下最初的鉴权,然后绑定分组 消息的
发
送
全部由webman使用gatewayclient来
进
行
发
送
,可能的流程会是这样 用户点了某个按钮,
发
齐http到webman,webman业务代码 第一种:里根
据
逻辑
发
送
了一个延时队列,然后webman httpresponse用户信息,过了一会,队列执行了,然后队列里面通过gatewayclient给用户
发
送
了一个消息,用户监听的websocket又收到了一条长链接信息 第
二
种:在业务代码直接调用gatewayclient给另一个用户
发
了一条推
送
消息,然后用户收到了自己的webman response 就是这种使用方式,会不会有什么坑 另外确认下 不管是 队列还是自定义
进
程,还是业务
进
程 reload都是安全的吧,都是执行完当前请求
问答
tp框架使用workerman 客户端
发
送
消息,服务端接收耗时30s以上
#### 问题描述 tp框架使用workerman 客户端
发
送
消息,服务端接收耗时30s以上 ![截图](/upload/img/20240911/1166e07214142a.png) #### 重现问题的步骤 已
进
入我就打印了,同时接收到login我就返回了code=0,但是客户端要30s以上才可以接收到
文档
listen
需要注意的是用这种方法只是在当前
进
程增加监听,并不会动态创建新的
进
程,也不会触
发
onWorkerStart方法。可以做到接收http请求,然后操作websocket客户端完成向客户端推
送
数
据
类似的效果。 **注意:** 如果PHP版本<=7.0,则不支持在多个子
进
程中实例化相同端口的Worker。// 通过workerman,向uid的页面推
送
数
据
$ret = sendMessageByUid($uid, $buffer); // 返回推
送
结果($worker->uidConnections as $connection) { $connection->send($message); } } // 针对uid推
送
数
据
1); // 推
送
的
数
据
,包含uid字段,表示是给这个uid推
送
$data = array('uid'=>'uid1', 'percent'=>'88%'); //
发
送
数
据
,注意5678端口是Text
问答
workerman/stomp 关闭 debug 问题
关闭 debug 还是有
发
送
数
据
输出,
发
送
数
据
时没有验证是否开启 debug ------------ !
问答
redis-queue多
进
程下消费如何保证不重复入库的问题
#### 问题描述 大概是我这边在处理队列
数
据
时需要判断表中是否存在,不存在就向表中插入
数
据
,存在的话就更新这条
数
据
,这个逻辑在单
进
程下正常,但是多
进
程下,会出现重复入库的问题。下面代码:以day为条件查询是否存在了当天的统计记录,存在就更新统计,不存在就新增一条当天的统计记录,但是多个
进
程下,好多个
进
程取到的都是当天不同时刻的
数
据
,我这边判断只能以日期判断,造成
数
据
重复入库问题想过在表中加入唯一索引,这样写入时会抛出异常,当前
数
据
重回队列等待下次消费,但是x次后
数
据
就被丢弃了,对这个当日统计记录来说会存在丢
数
据
的风险,求大佬给指点下。]; Db::table('statistic')->insert($data); } ``` 本问题不在讨论,感觉是弯路,但是下面大佬关于锁的指点确实很有启
发
,
问答
webman/admin 多
数
据
库 读取前缀出错
webman/admin 多
数
据
库 读取前缀出错 plugin/xxx/app/admin/controller 目录里 新增 ArticleController ```json /*** 构造函
数
*/ public function __construct() { $this->model = new Articles();} ``` Article和 管理后台不在同一个
数
据
库 就会默认读取 管理后台的前准 而不是读取的Article模型配置文件里面的前准
问答
长连接情况下会出现
数
据
串线的情况
Gateway+workerman, 客户端长连接,往后台拉取
数
据
时,有时候会出现一些不该出现的
数
据
,猜测是其他的请求响应
数
据
问答
$_SESSION覆盖存储是不是有问题?
."); Gateway::closeClient($client_id); return; } $_SESSION += 1; ``` 假如客户端连续
发
送
两条消息,第
二
条消息中的lastReceivedMsgId字段有几率会来不及更新的,取的是老的
数
据
,目前我们的解决方法是直接在
进
程中用clientId作为key值的
数
组去保存可以解决。
问答
请问大家是如何将websocket在线连接用户列表
数
据
和其他应用共享呢?
我目前的websocket服务已经开
发
完了,不过我
发
现在将在线用户列表的信息和其他应用共享的时候,搞得太复杂了,我先说说的处理方法吧: 我是在 redis 里面存了一个 sid 为 key,uid 为value 的
数
组,sid是客户端js生成的一个唯一字符串,该值在用户登录的有效期内是保持不变的,uid就是
数
据
表里的id字段值,自增
数
字型。客户端每次连接成功后都会给服务
发
一条消息,服务端在 onMessage 回调方法里面会将 redis 里面的
数
据
取出,然后 json_decode 处理成
数
组,然后检查当前的sid在不在这个
数
组里面,不在加加
进
去,加完之后又将该
数
组 json_encode 处理成字符串存回 redis 中去。
问答
webman 如何吧URL 生成
二
维码
#### 问题描述 这里写问题描述 webman 如何吧URL 生成
二
维码
问答
请教webman控
制
器方法如何不主动关闭http连接
#### 问题描述 请教webman如何在控
制
器的方法return之后不主动关闭http连接? ``` <?hello(Request $request) { return response('hello webman'); // 比如我有一个异步的方法,在return之前不会立即返回
数
据
问答
想使用AsyncUdpConnection作为客户端,如何
发
送
给多个或者其它(非
发
消息来的)客户端
#### 问题描述 下面这个例子,我一个客户端
发
送
给多个 UDP客户端,难道要实例化多个AsyncUdpConnection 对象吗?$udp_connection->send('hi'); }; #### 为此你搜索到了哪些方案及不适用的原因 感觉 send 方法应该提供,ip,port 参
数
,
问答
请教下ping的问题
你好,现在做的项目使用上了
GatewayWorker
框架,与客户端(网页,pad,windows客户端)做消息通讯,现在遇到一个问题是保活相关的。C++或者Java那边使用的第三方库,自带保活机
制
,会定时给服务端
发
ping消息来检测检测是否保持连接状态,但是抓包的结果显示opcode码为0x09,服务端在onmessage监听不到消息,导致我们服务端的一段时间过后就断开连接"websocket://0.0.0.0:8384"); // gateway名称,status方便查看 $gateway->name = 'YourAppGatewayWS'; // gateway
进
程
数
// 服务注册地址 $gateway->registerAddress = '127.0.0.1:1237'; // 心跳间隔 $gateway->pingInterval = 10; // 心跳
数
据
'{"type":"ping"}'; $gateway->pingData = ''; $gateway->pingNotResponseLimit = 2; ``` 目前为了兼容这种情况是让客户端
发
送
问答
workerman
发
送
401状态码要求登录
小弟刚刚开始学php和workerman,想一点一点熟悉其用法,今天想练习
发
送
头域,
发
400没问题了。现在想做一个一访问workerman就
发
401让浏览器弹出自带打登录框。
问答
如何在指定时间推
送
消息到H5,然后关闭当前页面
#### 问题描述 目前使用的webman安装
gatewayworker
插件,已经实现websocket连接后主动向H5
发
送
消息 现在有个问题就是怎么在指定的时间去推
送
,需要及时性很高 例如:
发
布一个收集表,当结束时间到了,能主动
发
送
消息到H5关闭当前已经打开在收集表页面的用户页面(这个结束时间可能在一个月之后的某个时间) 目前想到的是 用定时任务每秒去查询结束时间是否超过当前时间,然后判断是否
发
送
消息
问答
GatewayWorker
编码问题
#### 问题描述 客户端是硬件设备,要求ws通信编码为GBK,如何将`
GatewayWorker
`和`GatewayClient`编码设置成GBK?将`GatewayClient`通信
数
据
转为GBK 尝试json_encode之前将汉字转为GBK,结果是乱码。 尝试json_encode之后整体转为GBK,结果是乱码。 2.
问答
客户端
发
送
心跳后被服务器端拒绝
## 客户端心跳为3s ### 服务器端设置为5s*1 客户端重连后带心跳 依旧不能持久 这个机
制
其实我依旧没搞明白,求教下!!!! 此处只有一个客户端连接,特意测试心跳问题 ![客户端
发
心跳后被服务器端拒绝](//www.workerman.net/upload/20191231/315e0a2c18dc45.png "客户端
发
心跳后被服务器端拒绝")
问答
webman安装
数
据
库mongodb报警
#### 问题描述 webman安装
数
据
库mongodb报警 #### 程序代码 ``` composer require psr/container ^1.1.1 illuminate/database
问答
新手问题,无法连接WebSocket connection to 'ws://127.0.0.1:8282/' failed:
[截图](/upload/img/20220711/1162cbb76dc3a1.png) 各位大佬好,我是个新手,我是用的thinkphp,点的上图这个位置下载demo 然后复
制
到项目中vendor文件夹下``` events中: ```html public static function onConnect($client_id) { // // 向当前client_id
发
送
数
据
// Gateway::sendToClient($client_id, "Hello $client_id\r\n"); // // 向所有人
发
送
Gateway::sendToAll("$client_id login\r\n"); echo "$client_id 你好"; } ``` 然后php start.php start控
制
台启动
问答
onMessage中sendToGroup消息重复的问题
'group' => Gateway::getClientSessionsByGroup($message['group_id']) ])); } ``` ### 客户端
进
入后主动向服务端
发
送
一次消息= eval("("+e.data+")"); var type = data.type || ''; console.log(data); } ``` ### 问题症状: 第一个用户
进
入,
发
送
ready,服务端响应信息,客户端监听,收到服务端响应的 1 条消息; 第
二
个用户
进
入,
发
送
ready,服务端响应信息,客户端监听,收到服务端响应的 2 条消息; 第三个用户
进
入,
发
送
ready,第N个用户
进
入,
发
送
ready,服务端响应信息,客户端监听,收到服务端响应的 N 条消息; !
« 上一页
1
...
70
71
72
73
74
75
76
77
...
402
下一页 »
« 上一页
73
下一页 »
赞助商
+成为赞助商
×
请作者喝咖啡
×
🔝