IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> thinkphp5.0整合phpsocketio及时消息展示 -> 正文阅读

[PHP知识库]thinkphp5.0整合phpsocketio及时消息展示

PHPSocket.IO是基于workerman开发的php版本的socket.IO服务。可用于服务器消息的推送、聊天室、客服系统的开发
项目需求
前端下单,后台接受,并立即做出提示。例如:美团外卖,客户端下单成功后,商家端就会立即有接单语音提示。
开发环境:(由于需要启动socket服务,所以需在能够满足shell的环境下使用)
thinkphp5.0
phpsocketio
socketio 优势
减小服务器IO负载
长连接比ajax轮询靠谱
服务稳定,支持动态,内存占用很小,而且只有1个进程,根据官方报道来说1个进程也能容纳1W人次的高并发
官方文档
https://github.com/walkor/phpsocket.io
开始开发
安装 phpsocketio
首先cd到thinkphp的项目根目录。使用以下命令

composer require workerman/phpsocket.io

服务入口文件
回到项目根目录,新建server.php,开始编辑

<?php
define('APP_PATH', __DIR__ . '/application/');
define('BIND_MODULE','socketio/Server/index');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

创建服务控制器server.php文件里面,模块绑定到了’socketio/Server/index’

├─application      应用目录
│ ├─socketio      新创建目录
│ │ ├─controller   
│ │ │ ├─Server.php  启动文件

Server.php
入口文件只是绑定到了这个控制器,所以这个是整个socketio的核心。

<?php
namespace app\socketio\controller;

require_once  "./vendor/workerman/phpsocket.io/src/autoload.php";

use PHPSocketIO\SocketIO;
use think\Db;
use Workerman\Lib\Timer;
use Workerman\Worker;

class Server
{

    public function index()
    {
        $io = new SocketIO(2346);//socket的端口
        /*    // 当有客户端连接时
            $io->on('connection', function ($socket) use ($io) {
                Timer::add(6, function ()use ($io){
                    $xfmx = Db::name("xfmx")->where(['id'=>12758])->find();
                    $io->emit('price',json_encode($xfmx));
                });
            });*/
        //当有客户端连接时
        $io->on('connection', function ($socket) use ($io) {
            //向客户端发送消息
            $msg ="111";
            $io->emit('price', $msg);

            // 定义chat1事件回调函数
            $socket->on('chat1', function ($msg) use ($io) {
                // 触发所有客户端定义的chat message from server事件
                $io->emit('chat message from server', $msg);
            });
        });
 

        Worker::runAll();
    }
}

VUE:

<template>
	<view>
		<button @click="clickBtn()">触发服务端的chat1事件</button>
	</view>
</template>
<script>
	import io from 'common/weapp.socket.io';
	
	export default {
		data() {
			return {
				socket:'',
			}
		},
	
		created: function () {  
			
			
		},
		onLoad: function(e) {
		      this.connectSocketInit(); 
		 },
		methods: {
				connectSocketInit() { 
					this.socket = socket = (this.socket = io('ws://www.yncs.com:2346'));
					           let socket = this.socket
								// 连接成功
					            socket.on('connect', () => {
					                console.log('连接成功');
					            });
					             // 连接错误
					            socket.on('connect_error', d => {
					                console.log('连接失败', d);
					            });
					              // 接受到新消息
					        socket.on('price', d => {
					                let data = JSON.parse(d);
					                this.text =data.price; 
					                console.log(data);
					  });
			   },
			   
			   clickBtn(){
				   // 触发服务端的chat1事件
				    var data ="chat1"
				   	this.socket.emit('chat1', data);
				   	// 服务端通过emit('chat message from server', $msg)触发客户端的chat message from server事件
				   	this.socket.on('chat message from server', function(data){
				   	    console.log('get message:' + data + ' from server');
				   	});
			   }
		}
	}
</script>

执行:
php server.php start

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:41:11  更:2021-07-14 10:42:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 10:58:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码