phpsocket使用
服务器环境OpenCloud
1,安装,使用php8.2
composer require workerman/phpsocket.io
2,安装宝塔方便编辑文件
url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec
3,放开服务器端口
1),宝塔端口
2)phpsocket 端口
4,如果需要域名支持,申请https证书 选择nginx的证书下载
5,phpsocket服务端和客户端代码
1)服务端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <?php require_once __DIR__ . '/vendor/autoload.php' ; //require_once __DIR__ . '/medoo_init.php'; use Workerman\Worker; use Workerman\Timer; use PHPSocketIO\SocketIO; $context = array ( 'ssl' => array ( 'local_cert' => './ssl/feng.shuzizhengzhou.cn.pem' , 'local_pk' => './ssl/feng.shuzizhengzhou.cn.key' , 'verify_peer' => false, ) ); //$io = new SocketIO(3120, $context); $io = new SocketIO(3120); // 当有客户端连接时 $io ->on( 'connection' , function ( $socket ) use ( $io ){ //echo $socket->conn->remoteAddress.PHP_EOL; $socket ->emit( 'connection' , '123456' ); echo 123456; // 定义chat message事件回调函数 $socket ->on( 'chat message' , function ( $msg ) use ( $io ){ echo $msg ; //$db=get_db(); //$data=$db->query("SELECT manage_ic,clear_ic from dz_espdevice where deviceid='$msg' ")->fetchAll(\PDO::FETCH_ASSOC ); $data = array ( "manage_ic" => "34343434" ); // 触发所有客户端定义的chat message from server事件 $io ->emit( 'chat message from server' , json_encode( $data )); echo 'chat message from server' ; $time_interval = 5; Timer::add( $time_interval , function () use ( $io ){ $d2 = array ( array ( "manage_ic" => "11111144444777" . date ( 'Y-m-d H:i:s' ,time()), "clear_ic" => "0" )); $io ->emit( 'chat message from server' , json_encode( $d2 )); echo 'd2' ; }); }); }); Worker::runAll(); |
客户端代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | < script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js'></ script > < script src="https://cdn.workerman.net/js/jquery.min.js"></ script > < script > // 如果服务端不在本机,请把127.0.0.1改成服务端ip var socket = io('https://feng.shuzizhengzhou.cn:3120', { reconnection: true, // 是否启用重连 reconnectionAttempts: 5, // 重连尝试次数 reconnectionDelay: 3000, // 两次重连尝试之间的间隔时间 timeout :50000, // 连接超时时间(ms) //forceNew:true, //设置每次使用新的连接客户端 reconnection: true, //设置断开重连 reconnectionDelayMax: 5000 // 最大重连间隔时间 }); // 连接成功后的回调 //socket.on('connect', () => { //console.log('Connected to the server'); //}); // 连接断开后的回调 socket.on('disconnect', (reason) => { console.log(`Disconnected from the server: ${reason}`); }); // 连接失败后的回调 socket.on('connect_error', (error) => { console.log(`Connection error: ${error}`); }); // 连接重连后的回调 socket.on('reconnect', (attempt) => { console.log(`Reconnected to the server after ${attempt} attempts`); socket.emit('chat message', 'HN202405141'); socket.on('chat message from server', function(msg){ console.log('get message:' + msg + ' from server'); var ss= JSON.parse(msg) console.log(typeof ss) console.log( ss) for(i=0;i< ss.length ;i++){ console.log(ss[i].manage_ic) if(ss[i].manage_ic.length>0){ //$("#list").append("< li >"+ss[i].manage_ic+"</ li >") $("#list").html("< li >"+ss[i].manage_ic+"</ li >") } } }); socket.emit('chat message', '2222222222'); }); // 连接重连失败后的回调 socket.on('reconnect_failed', () => { console.log('Reconnection failed'); }); // 当连接服务端成功时触发connect默认事件 socket.on('connection', function(msg){ console.log('connect success:'+msg); }); socket.emit('chat message', 'HN202405141'); socket.on('chat message from server', function(msg){ console.log('get message:' + msg + ' from server'); var ss= JSON.parse(msg) console.log(typeof ss) console.log( ss) for(i=0;i< ss.length ;i++){ console.log(ss[i].manage_ic) if(ss[i].manage_ic.length>0){ //$("#list").append("< li >"+ss[i].manage_ic+"</ li >") $("#list").html("< li >"+ss[i].manage_ic+"</ li >") } } }); socket.emit('chat message', '2222222222'); </ script > < ul id="list"> </ ul > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2011-12-31 phpcms--权限问题,父栏目权限应用到子栏目不管用