代码拉取完成,页面将自动刷新
<?php
class server
{
private $serv;
public function __construct ()
{
$this -> serv = new swoole_websocket_server("0.0.0.0", 9501);
$this -> serv -> set([
'worker_num' => 2,
'max_request' => 4,
'task_worker_num' => 4,
'dispatch_mode' => 4,
'daemonize' => false,
]);
$this -> serv -> on('Start', [ $this, 'onStart' ]);
$this -> serv -> on('Open', [ $this, 'onOpen' ]);
$this -> serv -> on('Message', [ $this, 'onMessage' ]);
$this -> serv -> on('Close', [ $this, 'onClose' ]);
$this -> serv -> on('Task', [ $this, 'onTask' ]);
$this -> serv -> on('Finish', [ $this, 'onFinish' ]);
$this -> serv -> start();
}
public function onStart ($serv)
{
echo "### onStart ###" . PHP_EOL;
echo "SWOOLE" . SWOOLE_VERSION . "服务已启动" . PHP_EOL;
echo "master_pid: {$serv->master_pid}" . PHP_EOL;
echo "manager_pid: {$serv->manager_pid}" . PHP_EOL;
echo "###" . PHP_EOL . PHP_EOL;
}
public function onOpen ($serv, $request)
{
echo "### onOpen ###" . PHP_EOL;
echo "server: handshake success with fd{$request->fd}" . PHP_EOL;
$serv -> task([
'type' => 'login'
]);
echo "###" . PHP_EOL . PHP_EOL;
}
public function onTask ($serv, $task_id, $form_id, $data)
{
echo "### onTask ###" . PHP_EOL;
echo "#{$serv->worker_id} onTask:[PID={$serv->worker_pid}]: task_id={$task_id}" . PHP_EOL;
$msg = "";
switch ($data['type']) {
case 'login':
$msg = "我来了......";
break;
case 'speak':
$msg = $data['msg'];
break;
}
foreach ($serv -> connections as $fd) {
$connectionInfo = $serv -> connection_info($fd);
if ($connectionInfo['websocket_status'] == 3) {
//长度最大不得超过2M
$serv -> push($fd, $msg);
}
}
$serv -> finish($data);
echo "###" . PHP_EOL . PHP_EOL;
}
public function onMessage ($serv, $frame)
{
echo "### onMessage ###" . PHP_EOL;
echo "receive from fd{$frame->fd}:{$frame->data},opcode:{$frame->opcode},finish:{$frame->finish}" . PHP_EOL;
$serv -> task([ 'type' => 'speak', 'msg' => $frame -> data ]);
echo "###" . PHP_EOL . PHP_EOL;
}
public function onFinish ($serv, $task_id, $data)
{
echo "### onFinish ###" . PHP_EOL;
echo "Task {$task_id} 已完成" . PHP_EOL;
echo "###" . PHP_EOL . PHP_EOL;
}
public function onClose ($serv, $fd)
{
echo "### onClose ###" . PHP_EOL;
echo "client {$fd} closed" . PHP_EOL;
echo "###" . PHP_EOL . PHP_EOL;
}
}
$server = new server();
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。