1
0
mirror of https://gitee.com/zhc02/timely_service.git synced 2025-06-28 05:11:30 +08:00
This commit is contained in:
柏尘 2019-12-10 10:43:53 +08:00
parent e3af3c3212
commit 5ba57f4d0b
4 changed files with 19 additions and 31 deletions

View File

@ -1,4 +1,7 @@
# timely客服系统
#### Timely交流群
QQ:850286851
#### 介绍
基于TP5.1+swoole写的客服系统目前开放demo测试版 ,更多功能之后会基于此版本慢慢完善
@ -35,8 +38,5 @@ http://www.chat.cnavd.com/ 点击客服测试自动匹配客服服务
2. 在项目根目录运行 mkdir -m 777 runtime
3. 在项目根目录运行php think chat start 支持 start | start -d |restart |stop
4. 然后浏览器访问 www.xxxx.com/index/kefu/index
#### Timely交流群
QQ:850286851

View File

@ -3,6 +3,7 @@
namespace app\swoole\command;
use app\swoole\service\Event;
use Swoole\Process;
use think\console\Command;
use think\console\Input;
@ -144,7 +145,7 @@ class Chat extends Command
$this->output->writeln('<error>no swoole server process running.</error>');
return false;
}
dump(Event::$online);exit;
$this->output->writeln('Reloading swoole server...');
Process::kill($pid, SIGUSR1);
$this->output->writeln('> success');

View File

@ -14,7 +14,6 @@ use think\Exception;
use think\facade\Log;
use Logic\KefuLogic;
use exception\LogicException;
use Logic\ServiceLogic;
use exception\BaseException;
use Logic\QueueLogic;
use Logic\Visitor;
@ -55,7 +54,7 @@ class Event
* @param $fd 客户端标识
* @param $data 请求数据
*/
public static function kefuConnection($fd, $data, $server)
public static function kefuLogin($fd, $data, $server)
{
try {
@ -72,6 +71,7 @@ class Event
self::$kefu[$data['uid']]['visitor_fds'][$item['visitor_id']] = $item['client_id'];
}
}
Log::record('WebSocket请求开始数据信息[' . json_encode($frame) . ']');
QueueLogic::updateQueueingkefuClientid($kefu_code, $fd);
return self::reposon($fd, 200, '客服上线成功', [], 'kefu_online');
} catch (BaseException $e) {
@ -178,7 +178,7 @@ class Event
return self::reposon($fd, 200, $kefu_info['msg'], $kefu_info['data'], 'visitorToKefu');
} catch (Exception $e) {
Db::rollback();
Log::info('分配客服数据错误信息:' . $e->getMessage());
Log::error('分配客服数据错误信息:' . $e->getMessage());
//取消客服在线状态
KefuLogic::setKefuOnlineStatus(ltrim($kefu_info['data']['kefu_code'], 'KF_'), '', 0);
return self::reposon($fd, 401, '请重新尝试分配客服1', [], 'visitorToKefu');
@ -190,7 +190,7 @@ class Event
Db::commit();
} catch (BaseException $e) {
Db::rollback();
Log::record('分配客服数据错误信息:' . $e->getMessage());
Log::error('分配客服数据错误信息:' . $e->getMessage());
return self::reposon($fd, 402, '请重新尝试分配客服2', [], 'visitorToKefu');
}
unset($customer, $kefu_info);

View File

@ -22,32 +22,27 @@ class Service
echo "server: handshake success with fd{$request->fd}\n";
}
public function onMessage($server, $frame)
{
echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
try {
Log::record('WebSocket请求开始请求信息[' . json_encode($frame) . ']');
Log::info('WebSocket请求开始请求信息[' . json_encode($frame) . ']');
$data = json_decode($frame->data, true);
$cmd = $data['cmd'];
$messge = $data['data'];
$resut = Event::$cmd($frame->fd, $messge,$server);
$server->push($resut['fd'], $resut['data']);
} catch (BaseException $e) {
Log::record('WebSocket请求异常,异常信息' . $e->getMessage());
Log::record('WebSocket请求异常,异常信息' . $e->getFile().$e->getLine());
Log::error('WebSocket请求异常,异常信息:' . $e->getMessage().'错误地址:'. $e->getFile().$e->getLine());
$res = ['code' => $e->getCode(), 'msg' => $e->getMessage(), 'data' => '', 'cmd' => ''];
} catch (\Error $er) {
Log::record('WebSocket请求异常,异常信息' . $er->getMessage());
Log::record('WebSocket请求异常,异常信息' . $er->getFile().$er->getLine());
Log::error('WebSocket请求异常,异常信息:' . $er->getMessage().'错误地址:'. $er->getFile().$er->getLine());
$res = ['code' => $er->getCode(), 'msg' => $er->getMessage(), 'data' => '', 'cmd' => ''];
} catch (\Exception $era) {
Log::record('WebSocket请求异常,异常信息' . $era->getMessage());
Log::record('WebSocket请求异常,异常信息' . $era->getFile().$era->getLine());
Log::error('WebSocket请求异常,异常信息:' . $era->getMessage().'错误地址:'. $era->getFile().$era->getLine());
$res = ['code' => $era->getCode(), 'msg' => $era->getMessage(), 'data' => '', 'cmd' => ''];
} catch (\ErrorException $ere) {
Log::record('WebSocket请求异常,异常信息' . $ere->getMessage());
Log::record('WebSocket请求异常,异常信息' . $ere->getFile().$ere->getLine());
Log::error('WebSocket请求异常,异常信息:' . $ere->getMessage().'错误地址:'. $ere->getFile().$ere->getLine());
$res = ['code' => $ere->getCode(), 'msg' => $ere->getMessage(), 'data' => '', 'cmd' => ''];
}
if(isset($res)){
@ -60,28 +55,20 @@ class Service
{
$response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
}
public function onClose($server, $fd)
{
try {
Log::record('WebSocket关闭请求开始请求信息[' . json_encode($server) . ']');
Log::info('WebSocket关闭请求开始请求信息[' . json_encode($server) . ']');
$resut = Event::disconnect($fd,$server);
echo "client {$fd} closed\n";
} catch (BaseException $e) {
Log::record('WebSocket请求异常,异常信息' . $e->getMessage());
Log::record('WebSocket请求异常,异常信息' . $e->getFile().$e->getLine());
Log::error('WebSocket请求异常,异常信息:' . $e->getMessage().'错误地址:'. $e->getFile().$e->getLine());
} catch (\Error $er) {
Log::record('WebSocket请求异常,异常信息' . $er->getMessage());
Log::record('WebSocket请求异常,异常信息' . $er->getFile().$er->getLine());
Log::error('WebSocket请求异常,异常信息:' . $er->getMessage().'错误地址:'. $er->getFile().$er->getLine());
} catch (\Exception $era) {
Log::record('WebSocket请求异常,异常信息' . $era->getMessage());
Log::record('WebSocket请求异常,异常信息' . $era->getFile().$era->getLine());
Log::error('WebSocket请求异常,异常信息:' . $era->getMessage().'错误地址:'. $era->getFile().$era->getLine());
} catch (\ErrorException $ere) {
Log::record('WebSocket请求异常,异常信息' . $ere->getMessage());
Log::record('WebSocket请求异常,异常信息' . $ere->getFile().$ere->getLine());
Log::error('WebSocket请求异常,异常信息:' . $ere->getMessage().'错误地址:'. $ere->getFile().$ere->getLine());
}
}