使用workerman转发消息遇到的作用域问题?
参考的demo
https://github.com/walkor/wor...
业务场景
1.Events.php
调用 Server.php
方法 (因为Events里面是静态的,不太会用,所以新建了一个类)
2.Server.php
方法连接的时候创建AsyncTcpConnection客户端
连接其他的服务端
3.客户端
收到消息后通过Server
发送给网页
4.( 网页发送消息给server
, server
用AsyncTcpConnection创建的客户端
发送给其他服务端
代码
在上面的例子上,我新增了 Server.php
和 Client.php
用于消息转发
Events.php
我把Server保存在$_SESSION里,这样不知道有没有问题? = =
public static function onMessage($client_id, $data)
{
$_SESSION['Server']->onMessage($client_id, $data);
}
public static function onConnect($client_id)
{
$_SESSION['client_id'] = $client_id;
$_SESSION['Server'] = new Server();
$_SESSION['Server']->onConnect($client_id);
}
Server.php
我把Client保存在$_SESSION里,这样不知道有没有问题? = = !
public function onConnect($client_id)
{
$serverIp = '***.***.***.***';
$serve = "ws://$serverIp:9999";
$_SESSION['ClientAsyncTcpConnection'] = new AsyncTcpConnection($serve);
$_SESSION['Client'] = new Client($client_id);
$_SESSION['Client']->serveClientId = $client_id;
$_SESSION['Client']->serverIp = $serverIp;
$_SESSION['ClientAsyncTcpConnection']->onConnect = array($_SESSION['Client'], 'onConnect');
$_SESSION['ClientAsyncTcpConnection']->onMessage = array($_SESSION['Client'], 'onMessage');
$_SESSION['ClientAsyncTcpConnection']->onError = array($_SESSION['Client'], 'onError');
$_SESSION['ClientAsyncTcpConnection']->onClose = array($_SESSION['Client'], 'onClose');
$_SESSION['ClientAsyncTcpConnection']->onError = array($_SESSION['Client'], 'onError');
$_SESSION['ClientAsyncTcpConnection']->connect();
}
public function onMessage($client_id, $data)
{
$_SESSION['Client']->onRecv($data);
}
Client.php
这里遇到点问题,但是不知道是哪里出的问题
function onConnect($con)
{
$this->mCon = $con;
}
public function onRecv($data)
{
var_dump($this->mCon);
}
请问在 Client.php
里面 var_dump($this->mCon)
为什么是NULL呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
workerman有视频教程,挺不错的。网址: https://study.163.com/course/...