コード例 #1
0
ファイル: Event.php プロジェクト: bennysuh/workerman-game
 /**
  * 当有用户连接时,会触发该方法
  */
 public static function onConnect($message)
 {
     // 通过message验证用户,并获得uid
     $uid = self::checkUser($message);
     // 不合法踢掉
     if (!$uid) {
         // 返回失败
         return GateWay::kickCurrentUser('登录失败');
     }
     // [这步是必须的]合法,记录uid到gateway通信地址的映射
     GateWay::storeUid($uid);
     // [这步是必须的]发送数据包到address对应的gateway,确认connection成功
     GateWay::notifyConnectionSuccess($uid);
     // 向当前用户发送uid
     GateWay::sendToCurrentUid(json_encode(array('uid' => $uid)) . "\n");
     // 广播所有用户,xxx connected
     GateWay::sendToAll(json_encode(array('from_uid' => 'SYSTEM', 'message' => "{$uid} come \n", 'to_uid' => 'all')) . "\n");
 }
コード例 #2
0
ファイル: Event.php プロジェクト: bennysuh/myself-wokerman
 /**
  * 此链接的用户没调用GateWay::notifyConnectionSuccess($uid);前(即没有得到验证),都触发onConnect
  * 已经调用GateWay::notifyConnectionSuccess($uid);的用户有消息时,则触发onMessage
  * @param string $message 一般是传递的账号密码等信息
  * @return void
  */
 public static function onConnect($message)
 {
     /*
      * 通过message验证用户,并获得uid。
      * 一般流程这里$message应该包含用户名 密码,然后根据用户名密码从数据库中获取uid
      * 这里只是根据时间戳生成uid,高并发下会有小概率uid冲突
      */
     $uid = self::checkUser($message);
     // 不合法踢掉
     if (!$uid) {
         // 踢掉
         return GateWay::kickCurrentUser(TextProtocol::encode('uid非法'));
     }
     $_SESSION['name'] = TextProtocol::decode($message);
     // [这步是必须的]合法,记录uid到gateway通信地址的映射
     GateWay::storeUid($uid);
     // [这步是必须的]发送数据包到address对应的gateway,确认connection成功
     GateWay::notifyConnectionSuccess($uid);
     Gateway::sendToCurrentUid("\nchart room login success, your uid is {$uid}, name is {$_SESSION['name']}\nuse uid:words send message to one user\nuse words send message to all\n");
     // 广播所有用户,xxx come
     GateWay::sendToAll(TextProtocol::encode("{$_SESSION['name']}[{$uid}] come"));
 }