1.第一个问题感觉描述挺模糊的,什么场景啊?你说的谁的send ? ajax请求失败?具体报告了什么错误码和错误信息? ajax请求失败和send又有什么关系呢? ......。 总体原则上看,只能说GatewayWorker是基于网络事件库的异步非塞IO模型,所以非常稳定。 2.如果想采用 send 到 Events.php 类, 分两步,参考做法大致如下: (1) 参考 start_gateway.php 新启一个 start_gateway2.php,即新开一个内部推送端口,参考代码:
// gateway 进程,这里使用Text协议 $gateway = new Gateway("text://192.168.1.100:9999"); // gateway名称,status方便查看 $gateway->name = 'textGateway'; // gateway进程数 $gateway->count = 1; // 本机ip,分布式部署时使用内网ip $gateway->lanIp = '127.0.0.1'; // 内部推送端口, $gateway->startPort = 3900; // 服务注册地址 $gateway->registerAddress = '127.0.0.1:1238'; // 如果不是在根目录启动,则运行runAll方法 !defined('GLOBAL_START') && Worker::runAll();
(2)利用 AsyncTcpConnection 建立异步连接,直接send 即可,Event.php中的onMessage方法会接收到send来的数据,参考代码:
$worker = new Worker(); $worker->onWorkerStart = function ($worker){ $connection = new AsyncTcpConnection('text://192.168.1.100:9999'); $connection->onClose = function($connection) { echo "will reconnect after 2 seconds" . PHP_EOL; $connection->reconnect(2); }; //推送自己的业务数据 $connection->send("some data...."); $connection->connect(); }; // 运行所有服务 !defined('GLOBAL_START') && Worker::runAll();
send 和ajax 的问题:运行GatewayWorker服务,立即开启html页面,当 tcp 握手完成时发起ajax,采用ajax请求会失败,服务器 500 错误,当服务器运行一段时间后再开页面就是没有问题的;同样的情况在页面使用 send 发送数据到 Event.php 的话可以正常运行不用等待 主要问题:由于框架启动引入文件和 GatewayWorker 服务启动引入文件不同,是不是会造成初始化的类不同,导致GatewayWorker不能使用框架类,怎么在GatewayWorker服务启动同时引入框架类
怎么在GatewayWorker使用框架类呢
1、ajax 返回500服务器错误,只要gatewaywoker服务启动OK,那这个和gatewaywoker服务没有什么直接关系,自己排查下吧,catch下错误回调,一般多是通信数据格式有问题所致。 2、不同的框架整合关乎细节并依赖应用场景,需要自己酌情处理【你可以学学thinkphp怎么整合的】,否则建议将第三方框架和gatewayworker框架分开独立部署,然后就可以在框架之间灵活业务处理,具体方案官方都有样板: http://workerman.net/gatewaydoc/advanced/push.html
1.第一个问题感觉描述挺模糊的,什么场景啊?你说的谁的send ? ajax请求失败?具体报告了什么错误码和错误信息? ajax请求失败和send又有什么关系呢? ......。 总体原则上看,只能说GatewayWorker是基于网络事件库的异步非塞IO模型,所以非常稳定。
2.如果想采用 send 到 Events.php 类, 分两步,参考做法大致如下:
(1) 参考 start_gateway.php 新启一个 start_gateway2.php,即新开一个内部推送端口,参考代码:
(2)利用 AsyncTcpConnection 建立异步连接,直接send 即可,Event.php中的onMessage方法会接收到send来的数据,参考代码:
send 和ajax 的问题:运行GatewayWorker服务,立即开启html页面,当 tcp 握手完成时发起ajax,采用ajax请求会失败,服务器 500 错误,当服务器运行一段时间后再开页面就是没有问题的;同样的情况在页面使用 send 发送数据到 Event.php 的话可以正常运行不用等待
主要问题:由于框架启动引入文件和 GatewayWorker 服务启动引入文件不同,是不是会造成初始化的类不同,导致GatewayWorker不能使用框架类,怎么在GatewayWorker服务启动同时引入框架类
怎么在GatewayWorker使用框架类呢
send 和ajax 的问题:运行GatewayWorker服务,立即开启html页面,当 tcp 握手完成时发起ajax,采用ajax请求会失败,服务器 500 错误,当服务器运行一段时间后再开页面就是没有问题的;同样的情况在页面使用 send 发送数据到 Event.php 的话可以正常运行不用等待
主要问题:由于框架启动引入文件和 GatewayWorker 服务启动引入文件不同,是不是会造成初始化的类不同,导致GatewayWorker不能使用框架类,怎么在GatewayWorker服务启动同时引入框架类
1、ajax 返回500服务器错误,只要gatewaywoker服务启动OK,那这个和gatewaywoker服务没有什么直接关系,自己排查下吧,catch下错误回调,一般多是通信数据格式有问题所致。
2、不同的框架整合关乎细节并依赖应用场景,需要自己酌情处理【你可以学学thinkphp怎么整合的】,否则建议将第三方框架和gatewayworker框架分开独立部署,然后就可以在框架之间灵活业务处理,具体方案官方都有样板: http://workerman.net/gatewaydoc/advanced/push.html