socket php验证客户端验证,phpsocket.io 中认证失败的客户端连接如何服务端主动断开...

我修改启动脚本如下,@walkor ,帮忙看看要怎么断开非法的请求连接呢?

use Workerman\Worker;

use Workerman\WebServer;

use Workerman\Autoloader;

use PHPSocketIO\SocketIO;

// composer autoload

include __DIR__ . '/../../vendor/autoload.php';

include __DIR__ . '/../../src/autoload.php';

$io = new SocketIO(2020);

define('USER', "randy");

define('PWD', '123');

$io->on('connection', function ($socket) use ($io) {

$socket->addedUser = false;

$socket->auth = false;

\Workerman\Lib\Timer::add(1, function () use ($socket, $io) {

if (!$socket->auth && $socket) {

unset($socket);

}

}, [], false);

$socket->on("doauth", function ($account) use ($socket) {

//do auth

$account = @json_decode($account, true);

if (!is_array($account)) {

$socket->emit("auth fail", );

unset($socket);

return;

} elseif ($account != USER || $account != PWD) {

$socket->emit("auth fail", );

unset($socket);

return;

}

$socket->auth = true;

// when the client emits 'new message', this listens and executes

$socket->on('new message', function ($data) use ($socket) {

// we tell the client to execute 'new message'

$socket->broadcast->emit('new message', array(

'username' => $socket->username,

'message' => $data

));

});

// when the client emits 'add user', this listens and executes

$socket->on('add user', function ($username) use ($socket) {

global $usernames, $numUsers;

// we store the username in the socket session for this client

$socket->username = $username;

// add the client's username to the global list

$usernames = $username;

++$numUsers;

$socket->addedUser = true;

$socket->emit('login', array(

'numUsers' => $numUsers

));

// echo globally (all clients) that a person has connected

$socket->broadcast->emit('user joined', array(

'username' => $socket->username,

'numUsers' => $numUsers

));

});

// when the client emits 'typing', we broadcast it to others

$socket->on('typing', function () use ($socket) {

$socket->broadcast->emit('typing', array(

'username' => $socket->username

));

});

// when the client emits 'stop typing', we broadcast it to others

$socket->on('stop typing', function () use ($socket) {

$socket->broadcast->emit('stop typing', array(

'username' => $socket->username

));

});

// when the user disconnects.. perform this

$socket->on('disconnect', function () use ($socket) {

global $usernames, $numUsers;

// remove the username from global usernames list

if ($socket->addedUser) {

unset($usernames);

--$numUsers;

// echo globally that this client has left

$socket->broadcast->emit('user left', array(

'username' => $socket->username,

'numUsers' => $numUsers

));

}

});

});

});

$web = new WebServer('http://0.0.0.0:2022');

$web->addRoot('localhost', __DIR__ . '/public');

Worker::runAll();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值