shish %!s(int64=6) %!d(string=hai) anos
pai
achega
ff3d571c06

+ 29 - 0
app/client/controllers/ChatController.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace client\controllers;
+
+use Yii;
+use yii\web\Controller;
+use common\components\util;
+
+class ChatController extends BaseController
+{
+	
+	//聊天首页,前端使用
+	public function actionIndex()
+	{
+		return $this->renderPartial('index');
+	}
+	
+	//绑定 shish 2019.12.28
+	public function actionBind()
+	{
+		$post = Yii::$app->request->post();
+		$clientId = isset($post['clientId']) ? $post['clientId'] : '';
+		$userId = $this->userId;
+		Gateway::bindUid($client_id, $userId);
+	}
+
+
+	
+}

+ 17 - 0
app/client/views/chat/index.php

@@ -0,0 +1,17 @@
+<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
+<script>
+    ws = new WebSocket("ws://127.0.0.1:8282");
+    //服务端主动推送消息时会触发这里
+    ws.onmessage = function(e){
+        var data = eval("("+e.data+")");
+        var type = data.type || '';
+        switch(type){
+            case 'init':
+                //当前发起的聊天会员与当前登陆用户绑定关系
+                $.post('http://api.m.hhb.com/chat/bind', {clientId: data.client_id}, function(data){}, 'json');
+                break;
+            default :
+                alert(e.data);
+        }
+    };
+</script>

+ 3 - 2
composer.json

@@ -28,7 +28,8 @@
         "mikemadisonweb/yii2-rabbitmq": "^2.2.1",
         "lcobucci/jwt": "3.3",
         "vlucas/phpdotenv": "^4.0",
-        "phpoption/phpoption": "^1.6@dev"
+        "phpoption/phpoption": "^1.6@dev",
+        "workerman/gatewayclient": "3.0.13"
     },
     "require-dev": {
         "yiisoft/yii2-codeception": "~2.0.5",
@@ -50,7 +51,7 @@
     "repositories": {
         "packagist": {
             "type": "composer",
-            "url": "https://packagist.phpcomposer.com"
+            "url": "https://mirrors.aliyun.com/composer/"
         }
     }
 }

+ 38 - 34
vendor/GatewayWorker/Applications/retail/Events.php

@@ -13,38 +13,42 @@ use \GatewayWorker\Lib\Gateway;
  */
 class Events
 {
-    /**
-     * 当客户端连接时触发
-     * 如果业务不需此回调可以删除onConnect
-     * 
-     * @param int $client_id 连接id
-     */
-    public static function onConnect($client_id)
-    {
-        // 向当前client_id发送数据 
-        Gateway::sendToClient($client_id, "Hello $client_id\r\n");
-        // 向所有人发送
-        Gateway::sendToAll("$client_id login\r\n");
-    }
-    
-   /**
-    * 当客户端发来消息时触发
-    * @param int $client_id 连接id
-    * @param mixed $message 具体消息
-    */
-   public static function onMessage($client_id, $message)
-   {
-        // 向所有人发送 
-        Gateway::sendToAll("$client_id said $message\r\n");
-   }
-   
-   /**
-    * 当用户断开连接时触发
-    * @param int $client_id 连接id
-    */
-   public static function onClose($client_id)
-   {
-       // 向所有人发送 
-       GateWay::sendToAll("$client_id logout\r\n");
-   }
+	/**
+	 * 当客户端连接时触发
+	 * 如果业务不需此回调可以删除onConnect
+	 *
+	 * @param int $client_id 连接id
+	 */
+	public static function onConnect($client_id)
+	{
+		// 向当前client_id发送数据
+		//Gateway::sendToClient($client_id, "Hello $client_id\r\n");
+		// 向所有人发送
+		//Gateway::sendToAll("$client_id login\r\n");
+		Gateway::sendToClient($client_id, json_encode(array(
+			'type' => 'init',
+			'client_id' => $client_id
+		)));
+	}
+	
+	/**
+	 * 当客户端发来消息时触发
+	 * @param int $client_id 连接id
+	 * @param mixed $message 具体消息
+	 */
+	public static function onMessage($client_id, $message)
+	{
+		// 向所有人发送
+		Gateway::sendToAll("$client_id said $message\r\n");
+	}
+	
+	/**
+	 * 当用户断开连接时触发
+	 * @param int $client_id 连接id
+	 */
+	public static function onClose($client_id)
+	{
+		// 向所有人发送
+		GateWay::sendToAll("$client_id logout\r\n");
+	}
 }

+ 1 - 1
vendor/GatewayWorker/Applications/retail/start_gateway.php

@@ -23,7 +23,7 @@ require_once __DIR__ . '/../../vendor/autoload.php';
 // gateway 进程,这里使用Text协议,可以用telnet测试
 $gateway = new Gateway("websocket://0.0.0.0:8282");
 // gateway名称,status方便查看
-$gateway->name = 'YourAppGateway';
+$gateway->name = 'retail';
 // gateway进程数
 $gateway->count = 4;
 // 本机ip,分布式部署时使用内网ip

+ 1 - 1
vendor/GatewayWorker/start_for_win.bat

@@ -1,2 +1,2 @@
-php Applications\YourApp\start_register.php Applications\YourApp\start_gateway.php Applications\YourApp\start_businessworker.php
+php Applications\retail\start_register.php Applications\retail\start_gateway.php Applications\retail\start_businessworker.php
 pause