使用workerman转发消息遇到的作用域问题?

发布于 2022-09-11 19:37:55 字数 2516 浏览 16 评论 0

参考的demo

https://github.com/walkor/wor...

业务场景

1.Events.php 调用 Server.php方法 (因为Events里面是静态的,不太会用,所以新建了一个类)
2.Server.php方法连接的时候创建AsyncTcpConnection客户端连接其他的服务端
3.客户端收到消息后通过Server发送给网页
4.( 网页发送消息给server, serverAsyncTcpConnection创建的客户端发送给其他服务端

代码

在上面的例子上,我新增了 Server.phpClient.php 用于消息转发

clipboard.png

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过期情话 2022-09-18 19:37:55

workerman有视频教程,挺不错的。网址: https://study.163.com/course/...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文