<?php
require __DIR__ . '/../vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->publish('test', 'hello workerman mqtt');
};
$mqtt->connect();
};
Worker::runAll();
如示例中:每次publish主题时,都要new Client 。是不是意味着我每次对同一主题发布消息,都会创建一个连接/子进程,最后爆满。
目前的业务是有很多设备,需要上传自身状态,服务器也可以下发指令。目前订阅有通配符,创建很少的客户端,再解析就能实现更新设备属性。但是下发指令因为上面这个顾虑卡住了。对进程这方面不是很懂。想问下有影响吗。如果有影响,有没有其他方式处理?
不用每次创建一个啊,创建一个然后保存起来,下次再复用就行。
不是太懂,请教下如何保存,下次如何取用呢
没测试过,不过感觉这样就可以
多谢,的确是个思路,我先尝试尝试
onMessage应该是接收到消息时触发的,我publish时应该是主动的。好像逻辑上不通
我总是觉得其实我只是需要创建一个客户端,不管发布订阅都用这一个客户端实例,是不是可以让这个实例跟随workman存在内存中,不管发布还是订阅先看这个实例存在不存在,如果存在就用,不存在就创建一个
上面的代码就是这样的,创建了一个实例跟随workerman内存中
上面只是一个例子,并不是说一定让你在onMessage里去publish啊
@16:的确是你的思路提醒的
http://doc.workerman.net/faq/push-in-other-project.html
看来我文档还是没看仔细,这里有相关解答
您解决没有呀,,给我说说呀,我也是这样的情况 也不知道 怎么弄了 ,