| 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);
        
        
        $io->on('connection', function ($socket) use ($io) {
            
            $msg ="111";
            $io->emit('price', $msg);
            
            $socket->on('chat1', function ($msg) use ($io) {
                
                $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(){
				   
				    var data ="chat1"
				   	this.socket.emit('chat1', data);
				   	
				   	this.socket.on('chat message from server', function(data){
				   	    console.log('get message:' + data + ' from server');
				   	});
			   }
		}
	}
</script>
 执行:php server.php start
 |