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
|