报错截图
1.在public新建文件server.php(名称任意取)代码如下
<?php
/**
* 启动socket,通过cmd启动
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2020/4/10
* Time: 15:07
*/
#!/usr/bin/env php
define('APP_PATH', __DIR__ . '/../application/');
define('BIND_MODULE','socketio/Server/index');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
2.在application下创建文件夹socketio,并创建控制器server,方法index代码入下
<?php
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2020/4/9
* Time: 11:06
*/
namespace app\socketio\controller;
//require '../vendor/autoload.php';
use think\Controller;
use think\Db;
use think\exception\DbException;
use think\Config;
use Workerman\Worker;
use PHPSocketIO\SocketIO;
class Server extends Controller
{
public function index()
{
// 创建一个Worker监听2346端口,使用websocket协议通讯
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 启动4个进程对外提供服务
$ws_worker->count = 4;
// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function($connection, $data)
{
// 向客户端发送hello $data
$connection->send('hello ' . $data);
};
// 运行worker
Worker::runAll();
}
}
3.打开cmd,cd到public下并运行server.php
4.如下图所示则运行成功
5.出现cannot redeclare captcha()的原因是不需要在控制器server中添加如下代码
require '../vendor/autoload.php';