由于公司需要做客服实时通讯的功能,对这方面还不是很熟悉,在网上看了很多资料,最后决定尝试使用tp5+workerman来学习。总结如下
1.使用composer下载workerman
linux环境下:
进入tp5框架的根目录,运行命令:composer require topthink/think-worker -vvv
如果出现报错,则加上版本号:composer require topthink/think-worker=1.0.* -vvv
windows环境下:
还要安装 composer require workerman/workerman-for-win -vvv
2.在thinkphp5根目录(即与application同级目录)创建server.php,创建引导文件
内容如下:
define('APP_PATH',__DIR__.'/application/');
define('BIND_MODULE','push/Worker');
//加载框架引导文件
require __DIR__.'/thinkphp/start.php';
3.新建控制模块和控制器
在application目录下创建模块,命名为push
创建controller,命名为Worker.php,添加内容如下:
namespace app\push\controller;
use think\worker\Server;
class Worker extends Server{
public function onMessage($connection, $data){
$connection->send('我收到你的信息了');
}
//当连接建立时触发的回调函数
public function onConnect($connection){}
//当连接断开时触发的回调函数
public function onClose($connection){}
//当客户端的连接上发生错误时触发
public function onError($connection, $code, $msg){
echo "error $code $msg\n";
}
//每个进程启动
public function onWorkerStart($worker){
}
创建视图view,命名为test,添加视图模板文件,命名为test.html,主要内容如下:
ws = new WebSocket("ws://127.0.0.1:2346");
//打开链接
ws.onopen = function() {
alert("连接成功");
//发送信息
ws.send('hello');
};
//接收函数
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
在controller下添加Test.php控制器,添加index方法,主要内容如下:
public function index(){
return $this->fetch('test/test');
}
4.进入项目的根目录,运行server.php
命令:php server.php