安装socket.io库
composer require workerman/phpsocket.io
启动入口文件
<?php
// [ 应用入口文件 ]
namespace think;
// [ 入口文件 ]
// 调试模式开关
define('APP_DEBUG', true);
// 定义CMF根目录,可更改此目录
define('CMF_ROOT', dirname(__DIR__) . '/');
//
//// 定义应用目录
define('APP_PATH', CMF_ROOT . 'app/');
// 定义路由目录
define('ROUTE_PATH', APP_PATH . 'route.php');
// 定义配置目录
define('CONFIG_PATH', CMF_ROOT . 'data/config/');
// 定义命名空间
define('APP_NAMESPACE', 'app');
// 定义网站入口目录
define('WEB_ROOT', __DIR__ . '/');
// 加载基础文件
require __DIR__ . '/../vendor/thinkphp/base.php';
// 执行应用并响应
// Container::get('app', [APP_PATH])->bind('portal/Server')->run()->send();
// Container::get('app')->bind('demo/Server')->run()->send();
Container::get('app')->bind('common/Server')->run()->send();
扩展文件
<?php
namespace app\common\controller;
use Workerman\Worker;
use PHPSocketIO\SocketIO;
use think\Db;
use cmf\controller\RestBaseController;
class ServerController extends RestBaseController
{
//本地测试
public function index()
{
// 在2021端口创建服务
$io = new SocketIO(2021);
$io->on('connection', function ($socket) use ($io) {
$socket->on('chat message', function ($msg) use ($io) {
$io->emit('chat message', $msg);
});
// 监听到新的客户端连接即在服务端输出'new connection'
echo 'new connection' . "\n";
// 并向客户端发送'连接成功'
$socket->emit('success', '连接成功');
// 客户端发送消息过来
$socket->on('sendMsg', function ($msg) use ($io) {
// 在服务端输出消息
echo $msg . "\n";
// 在收到的消息前面拼接'收到'后向客户端发送回去
$io->emit('sendMsg', '收到"' . $msg . '"');
// 将接受到的消息存储到数据库
$data['msg'] = $msg;
// Db::table('order')->insert($data);
});
});
// 启动服务
Worker::runAll();
}
//线上跑
public function start()
{
// 在2021端口创建服务
$io = new SocketIO(2021);
$io->on('connection', function ($socket) use ($io) {
$socket->on('chat message', function ($msg) use ($io) {
$io->emit('chat message', $msg);
});
// 监听到新的客户端连接即在服务端输出'new connection'
echo 'new connection' . "\n";
// 并向客户端发送'连接成功'
$socket->emit('success', '连接成功');
// 客户端发送消息过来
$socket->on('sendMsg', function ($msg) use ($io) {
// 在服务端输出消息
echo $msg . "\n";
// 在收到的消息前面拼接'收到'后向客户端发送回去
$io->emit('sendMsg', '收到"' . $msg . '"');
// 将接受到的消息存储到数据库
$data['msg'] = $msg;
// Db::table('order')->insert($data);
});
});
// 启动服务
Worker::runAll();
}
}
前端连接
<script src='https://cdn.bootcss.com/socket.io/2.0.3/socket.io.js'></script>
// 如果服务端不在本机,请把127.0.0.1改成服务端ip
var socket = io('http://127.0.0.1:2021');
socket.on('sendMsg', function (msg) {
// 服务器端若检测到充值,则提醒
if (msg == '1') {
alert('你好,有新的充值提醒');
}
});
启动服务
php server.php start -d
来源:CSDN
作者:php小影
链接:https://blog.csdn.net/weixin_43993175/article/details/103877668