- 根据自己的php版本安装好mongodb的dll文件 安装过程
- 下载mongodb https://www.mongodb.com/try/download/community
composer require workerman/gateway-worker
安装gatewayworker
4. 或者在 http://doc2.workerman.net/
下载demo
5. 主要代码部分
application/config.php
文件后面写入
"mongo"=> [
'type' => '\think\mongo\Connection',
'hostname' => '127.0.0.1',
'database' => '数据库名',
'username' => '',
'password' => '',
'hostport' => 27017,
],
Events.php
文件
<?php
namespace app\online\controller;
use GatewayWorker\Lib\Gateway;
use think\Db;
class Events
{
public static function onWorkerStart($businessWorker)
{
# Redis
global $mongo;
$mongo = Db::connect("数据库名");
}
public static function onMessage($client_id, $message)
{
global $mongo;
$message_data = json_decode($message, TRUE);
switch ($message_data['type']) {
# 给用户所在的设备发送消息 {"type":"send_to_uid", "uid":"1", "message":"你好一号"}
case 'send_to_uid':
$reuser = Gateway::getClientIdByUid($message_data['uid']); // 被发送的用户设备
// admin_id 通过的平台 user_id提问用户 reuser被提问用户
if (count($reuser) <= 0) { #如果在线设备比零小-不在线 -存储数据进
$msg = [
'uid' => $user['id'],
"message"=> $message_data['message'],
'reuser'=> $message_data['uid'],
"sendtime" => time(),
"status" => 1,
];
$mongo->name("message")->insert($msg); # 主要的写入部分
}
// $redis->hmset("message",array("uid"=>$user['id'], "message"=> $message_data['message'], 'reuser'=> $message_data['uid']));
Gateway::sendToUid($message_data['uid'], $message_data['message']);
break;
}
}